patchworklib

patchworklib

用于组合和对齐matplotlib生态图表的Python库

patchworklib是一个Python库,用于组合和对齐matplotlib、Seaborn和plotnine等生态系统中的图表。它通过简单的'/'和'|'运算符实现不同类型图表的灵活排列。该库能将各种seaborn和plotnine图表作为matplotlib子图处理,解决了图表排版耗时的问题。patchworklib为创建复杂图表布局提供了直观的方法,提高了数据可视化效率。

patchworklib数据可视化matplotlib子图排列绘图工具Github开源项目

patchworklib

Patchworklib是一个通用的matplotlib相关绘图组合器(包括简单的matplotlib绘图、Seaborn绘图(轴级和图形级)以及plotnine绘图)。这个库的灵感来自ggplot2的patchwork。因此,与原始的patchwork一样,用户可以仅使用"/"和"|"运算符轻松对齐matplotlib绘图。虽然matplotlib正式提供了一个不错的子图组合器"subplot_mosaic",但我认为patchworklib的方式更直观、更灵活。

此外,许多基于matplotlib的第三方库,如plotnine和seaborn,提供了使用简单Python代码生成漂亮图表的功能,但这些图表中的许多不能作为matplotlib子图处理。因此,它们的位置必须手动调整。现在,科学家们花费宝贵的时间来排列图表。

Patchworklib为这个问题提供了解决方案。通过使用patchworklib,任何类型的seaborn和plotnine绘图都可以作为matplotlib子图处理。

加入我们的团队:诚聘生物信息学研究员

我们目前正在寻找一位有生物信息学专业知识的熟练研究员加入我们的实验室。 有关更多详情和申请,请访问以下网址

安装

对于普通用户,我们建议您按以下方式安装官方发布版: pip install patchworklib

如果您想使用开发版本,可以使用以下单个命令安装: pip install git+https://github.com/ponnhide/patchworklib.git

新闻

2023年10月23日:版本0.6.3发布。

  • 现在支持Seaborn v0.13.0。
  • 我已确认patchworklib仍适用于plotnine v0.12.3。

2023年5月16日:版本0.6.1发布。

  • 我无法完全支持plotnine版本0.12.1(它可以工作,但patchworklib的排列结果不如预期)。也许,我将来不会支持plotnine。
  • Bricks对象获得了新方法align_xlabelsalign_ylabels,这有助于用户对齐给定Brick对象的x/y标签。
  • 在stack函数中添加了新参数equal_spacing。如果此值为True,轴边界框应以相等的间距放置。否则,根据x/y刻度标签和x/y标签的文本值,它们可能并不总是等距排列。
  • 关闭并可能解决了问题"当子图轴对齐时对齐Bricks的标签。 #40"
  • 关闭并可能解决了问题"不适用于Plotnine Seaborn主题。 #37"
  • 关闭并可能解决了问题"在plotnine中无法设置标题位置。 #36"
<details> <summary> <h2> 更新日志 </h2> </summary>

2022年12月8日:版本0.5.0发布。

  • 添加了新的运算符"+"和"-"。
  • 现在支持plotnine > v0.10.x。
  • 现在patchworklib可以处理由面向对象的seaborn接口生成的图表。
  • 在此存储库中添加了patchworklib提供的每个函数和类的描述。如果您想详细了解如何使用patchworklib,请参阅API.md
  • 更新了patchworklib-examples

2022年8月15日:版本0.4.7发布。

  • 修复了一些错误。
  • 添加了inset函数。请参见以下示例。
  • hstackvstack函数中添加了keep_aspect参数。
  • 示例代码已移至patchworklib-examples
<details> <summary> 创建嵌入元素 </summary>
import patchworklib as pw from plotnine import * from plotnine.data import * g1 = pw.load_ggplot(ggplot(mtcars) + geom_point(aes("mpg", "disp")),figsize=(4, 2)) g2 = pw.load_ggplot(ggplot(mtcars) + geom_boxplot(aes("gear", "disp", group = "gear")) + theme_classic()) g12 = pw.inset(g1,g2) g12.savefig()
<img src="https://yellow-cdn.veclightyear.com/ab5030c0/c5f8417a-e319-4b20-aa4e-ec1a28615974.png" width="600x600">
g12 = pw.inset(g1,g2, loc="lower left", hratio=0.4, wratio=0.2) g12.savefig("inset_plotnine2.png")
<img src="https://yellow-cdn.veclightyear.com/ab5030c0/5b8b9cba-b3d0-4731-bbd7-a25da0424907.png" width="600x600"> </details>

2022年8月9日:版本0.4.6发布。

  • 修复了一些错误(请参见问题#18)。
  • 提高了绘图速度。

2022年7月20日:版本0.4.5发布。

  • 修复了一些错误。
  • 修改了与ggplot主题继承相关的函数。如果您使用patchworklib处理plotnine图表,请务必更新。
  • 在Bricks对象中指定绘图(Brick对象)时,您现在可以直接指定Brick对象,而不是Brick对象的标签名称。请参见以下示例。
<details> <summary> 通过在Bricks对象中指定Brick对象来对齐plotnine图表。 </summary>
import patchworklib as pw from plotnine import * from plotnine.data import * g1 = pw.load_ggplot(ggplot(mpg, aes(x='cty', color='drv', fill='drv')) + geom_density(aes(y=after_stat('count')), alpha=0.1) + scale_color_discrete(guide=False) + theme(axis_ticks_major_x=element_blank(), axis_text_x =element_blank(), axis_title_x=element_blank(), axis_text_y =element_text(size=12), axis_title_y=element_text(size=14), legend_position="none"), figsize=(4,1)) g2 = pw.load_ggplot(ggplot(mpg, aes(x='hwy', color='drv', fill='drv')) + geom_density(aes(y=after_stat('count')), alpha=0.1) + coord_flip() + theme(axis_ticks_major_y=element_blank(), axis_text_y =element_blank(), axis_title_y=element_blank(), axis_text_x =element_text(size=12), axis_title_x=element_text(size=14) ), figsize=(1,4)) g3 = pw.load_ggplot(ggplot(mpg) + geom_point(aes(x="cty", y="hwy", color="drv")) + scale_color_discrete(guide=False) + theme(axis_text =element_text(size=12), axis_title=element_text(size=14) ), figsize=(4,4)) pw.param["margin"] = 0.2 (g1/(g3|g2)[g3]).savefig() #通过在(g3|g2)中指定g3,g1正好定位在g3上。
<img src="https://yellow-cdn.veclightyear.com/ab5030c0/33bc1716-d7e4-46ce-96e8-bf22ba48326d.png" width="800x800"> </details>

2022年7月19日:版本0.4.3发布。

  • 修复了一些错误。
  • 添加了basefigure参数。您可以通过patchworklib.basefigure访问patchworklib的基本图形。
  • 现在支持plotnine v0.9.0。可能仍存在一些错误。如果您发现错误,请在问题中告诉我。

2022年4月22日:版本0.4.2发布。

  • 修复了一些错误。

2022年4月18日:版本0.4.1发布。

  • load_seaborngrid 现可接受 seaborn.clustermap 图表。详情请参见 Google Colab 上的示例代码。
  • 修复了一些bug。

2022年3月27日:版本0.4.0发布。

  • 为每个方法和类添加了文档字符串。
  • patchworklib.Bricks 类添加了几个新方法,用于为 Bricks 对象中的 Brick 对象设置通用标签、标题、轴线和颜色条。 使用方法请参考文档字符串或 Google Colab 上的示例代码。

2022年2月4日:版本0.3.6发布。

  • 修复了与排列多个极坐标图对象相关的一些bug。

2022年2月4日:版本0.3.5发布。

  • 修复了 move_legend 中的一些bug。(seaborn网格图的 move_legend 功能无法正常工作。)
  • 提高了 savefig 操作的速度。

2022年1月24日:版本0.3.3发布。

  • 修复了一些bug。

2022年1月22日:版本0.3.0发布。

<details> <summary> Patchworklib 现在支持排列 matplotlib.projections.polar.PolarAxes 对象的功能。 </summary>

当您将 matplotlib.projections.polar.PolarAxes 对象加载为 Brick 类对象时,请使用 'cBrick' 而不是 'Brick'。 现在,您可以使用 pycircos 和 patchworklib 排列多个圆形图。请参阅以下示例代码。 https://colab.research.google.com/drive/1tkn7pxRqh9By5rTFqRbVNDVws-o-ySz9?usp=sharing

</details>

2022年1月21日:版本0.2.1发布。

  • 修复了 'load_seaborngrid' 的一些bug。

2022年1月20日:版本0.2.0发布。

<details> <summary> Patchworklib 现在可以排列 Seaborn 网格图。添加了 "stack" 功能。修复了一些bug。 </summary>

排列 Seaborn 网格图

Patchworklib 支持排列基于 axisgrid(FacetGrid、PairGrid 和 JointGrid)生成的多个 Seaborn 图表。 让我们看看以下示例。

import os import seaborn as sns import patchworklib as pw from functools import reduce pw.overwrite_axisgrid() #使用 pw.load_seagorngrid 时,应执行 'overwrite_axisgrid'。 df = sns.load_dataset("penguins") g1 = sns.pairplot(df, hue="species") g1 = pw.load_seaborngrid(g1) g1.move_legend("upper left", bbox_to_anchor=(0.08,1.01)) planets = sns.load_dataset("planets") cmap = sns.cubehelix_palette(rot=-.2, as_cmap=True) g2 = sns.relplot( data=planets, x="distance", y="orbital_period", hue="year", size="mass", palette=cmap, sizes=(10, 200), ) g2.set(xscale="log", yscale="log") g2.ax.xaxis.grid(True, "minor", linewidth=.25) g2.ax.yaxis.grid(True, "minor", linewidth=.25) g2.despine(left=True, bottom=True) g2 = pw.load_seaborngrid(g2) penguins = sns.load_dataset("penguins") g3 = sns.jointplot( data=penguins, x="bill_length_mm", y="bill_depth_mm", hue="species", kind="kde", ) g3 = pw.load_seaborngrid(g3, labels=["joint","marg_x","marg_y"]) ((g2/g3["marg_x"])|g1).savefig()
<img src="https://yellow-cdn.veclightyear.com/ab5030c0/103b72e0-8313-4915-ade2-51dfa0e0ef31.png" width="800x800">

此外,一些示例代码可在 Google Colaboratory 上执行。

"stack" 功能

我实现了 stack 功能。此功能允许用户沿指定方向排列多个(两个以上)Brick 或 Bricks 对象,如下所示。

import patchworklib as pw ax_list = [] for i in range(10): ax_list.append(pw.Brick(figsize=(2,2), label="ax{}".format(i))) stacked_axes = pw.stack(ax_list, operator="|", margin=0.2) stacked_axes.savefig()
<img src="https://yellow-cdn.veclightyear.com/ab5030c0/ab15dee4-4d08-4e7d-88b3-79a7827f7c89.png" width="800x800"> </details>

2022年1月14日:版本0.1.0发布。

  • Patchworklib 现可通过 pip 安装。
<details> <summary> <b>2022年1月13日:实现了 "spacer" 类,并为 Bricks 类添加了 "case" 参数。</b> </summary>

在图表周围添加空白空间

#准备图表数据 import numpy as np import matplotlib as mpl import patchworklib as pw data1 = 20 * np.random.rand(100,100) - 10 data2 = 20 * np.random.rand(100,100) - 10 cmap = mpl.cm.Reds norm = mpl.colors.Normalize(vmin=-10, vmax=10) ax1 = pw.Brick("axx", figsize=(3,3)) ax2 = pw.Brick("axy", figsize=(3,3)) ax1.imshow(data1, interpolation='nearest', cmap=cmap, aspect="auto") ax2.imshow(data2, interpolation='nearest', cmap=cmap, aspect="auto")

不使用 spacer

ax_cb = pw.Brick("ax_cb", figsize=(0.1,3)) cb = mpl.colorbar.ColorbarBase(ax_cb, cmap=cmap, norm=norm) ax12 = ax1|ax2 heatmap2 = ax12 | ax_cb heatmap2.savefig()
<img src="https://yellow-cdn.veclightyear.com/ab5030c0/5a611002-fc62-4bdd-80ec-0f6af0be712f.png" width="400x400">

使用 spacer

ax_cb2 = pw.Brick("ax_cb2", figsize=(0.1,1.5)) cb2 = mpl.colorbar.ColorbarBase(ax_cb2, cmap=cmap, norm=norm) heatmap2 = ax12 | (pw.spacer(ax_cb2,0.5)/ax_cb2/pw.spacer(ax_cb2,0.5)) heatmap2.savefig()
<img src="https://yellow-cdn.veclightyear.com/ab5030c0/4c7a0563-c7f8-485e-bae7-ff762db5cc1e.png" width="400x400">

多个图表的总标题 有时,只需为多个图表设置通用标签和标题。 通过指定 Bricks 类对象的 case 参数,可以处理多个图表的通用 matplotlib 艺术家对象。

ax12.case.set_title("多个图表的总标题", pad=10) heatmap2 = ax12|(pw.spacer(ax_cb,0.5)/ax_cb/pw.spacer(ax_cb,0.5)) heatmap2.savefig("")
<img src="https://yellow-cdn.veclightyear.com/ab5030c0/309fce83-fd61-42dc-80ed-178ccbb2d7ed.png" width="400x400"> </details> <details> <summary> <b>01072022: Patchworklib 已更新,以支持排列多个由 <a href="https://github.com/has2k1/plotnine">plotnine</a> 生成的图表。</b> </summary>
import patchworklib as pw from plotnine import * from plotnine.data import * g1 = pw.load_ggplot(ggplot(mtcars) + geom_point(aes("mpg", "disp")) + theme(figure_size=(2, 3))) g2 = pw.load_ggplot(ggplot(mtcars) + geom_boxplot(aes("gear", "disp", group = "gear")) + theme(figure_size=(2, 3))) g12 = g1 | g2 g12.savefig()
<img src="https://yellow-cdn.veclightyear.com/ab5030c0/f41d9ad2-913e-42c9-8a22-55542151365c.png" width="400x400">
g3 = pw.load_ggplot(ggplot(mpg, aes(x='displ', y='hwy')) + geom_point() + geom_smooth(span=.3) + theme(figure_size=(2, 3))) g4 = pw.load_ggplot(ggplot(mtcars) + geom_bar(aes("carb")) + theme(figure_size=(7, 2))) g1234 = (g1|g2|g3)/g4 g1234.savefig()
<img src="https://yellow-cdn.veclightyear.com/ab5030c0/9496464f-6637-4871-b9cd-61fd04b9eb26.png" width="600x600"> </details> </details>

使用方法

如果您想详细了解如何使用 patchworklib,请参阅 API.md

使用 patchworklib,您可以仅使用 |/ 运算符快速自由地排列 matplotlib 图表,如下所示。

import patchworklib as pw import seaborn as sns fmri = sns.load_dataset("fmri") ax1 = pw.Brick(figsize=(3,2)) sns.lineplot(x="timepoint", y="signal", hue="region", style="event", data=fmri, ax=ax1) ax1.legend(bbox_to_anchor=(1.05, 1.0), loc='upper left') ax1.set_title("ax1") titanic = sns.load_dataset("titanic") ax2 = pw.Brick(figsize=(1,2)) sns.barplot(x="sex", y="survived", hue="class", data=titanic, ax=ax2) ax2.move_legend(new_loc='upper left', bbox_to_anchor=(1.05, 1.0)) ax2.set_title("ax2") ax12 = ax1|ax2 ax12.savefig("ax12.png")
<img src="https://yellow-cdn.veclightyear.com/ab5030c0/2b7b0f3b-1a2b-4eb9-abd8-5c2395286057.png" width="600x600">

所有示例代码的 Jupyter Notebook 文件都可以在 patchworklib-examples 中找到,并且可以在 Google Colaboratory 中执行。

图库

多个轴级 seaborn 图表的排列 <img src="https://yellow-cdn.veclightyear.com/ab5030c0/81da41d4-c436-4a4b-848b-a710a6f60716.png" width="1000x1000">

多个 Plotnine 图表的排列 <img src="https://yellow-cdn.veclightyear.com/ab5030c0/55aed293-6fc0-42f7-917e-3805cd4a0f78.png" width="1000x1000">

多个图级 seaborn 图表的排列 <img src="https://yellow-cdn.veclightyear.com/ab5030c0/337f9bd7-5f6a-4209-94e8-8c9bf2318742.png" width="1000x1000">

入门

<details> <summary>示例代码</summary>

教程 ~组合多个 seaborn 图表~ 以下教程代码可在 tutorial1 中执行

1. 导入 patchworklib 库

import patchworklib as pw fmri = sns.load_dataset("fmri") ax1 = pw.Brick("ax1", figsize=(4,2)) sns.lineplot(x="timepoint", y="signal", hue="region", style="event", data=fmri, ax=ax1) ax1.move_legend(new_loc='upper right') ax1.set_title("ax1")

2. 创建示例图表

使用 seaborn 模块创建一些示例图表。patchworklib 模块提供的 Brick 类是 matplotlib.axes.Axes 的子类。因此,Brick 类对象可以传递给具有 ax 参数的 seaborn 绘图函数。

在创建 Brick 类对象时,应指定 label 值,并且它在 Python 脚本中生成的 Brick 类对象中应是唯一的(如果未指定 label 值,则会自动给出唯一的标签名称。可以使用 get_label() 方法确认该值)。还可以指定 figsize 参数。但是,该值并不是很重要,因为在排列图表时,Brick 类对象的图形大小可以自动调整。savefig(filename=str) 方法返回 matplotlib.figure.Figure 类对象。如果给定 filename,则可以将图形对象输出到文件。

import seaborn as sns #示例图表 1(参考:https://seaborn.pydata.org/examples/errorband_lineplots.html) fmri = sns.load_dataset("fmri") ax1 = pw.Brick("ax1", figsize=(4,2)) sns.lineplot(x="timepoint", y="signal", hue="region", style="event", data=fmri, ax=ax1) ax1.move_legend(new_loc='upper right') ax1.set_title("ax1") ax1.savefig()
<img src="https://yellow-cdn.veclightyear.com/ab5030c0/3947c3c0-195d-41ff-a7e9-b13d6f3648a8.png" width="350x350">

Brick 类提供了 movelegend(loc=str, bbox_to_anchor=(float,float)) 方法。使用此方法,可以快速修改图例位置。

#示例图表 2(参考:https://seaborn.pydata.org/tutorial/categorical.html) titanic = sns.load_dataset("titanic") ax2 = pw.Brick("ax2", figsize=(1,2)) sns.barplot(x="sex", y="survived", hue="class", data=titanic, ax=ax2) ax2.move_legend(new_loc='upper left', bbox_to_anchor=(1.05, 1.0)) #Brick 类的原始方法 ax2.set_title("ax2") ax2.savefig()
<img src="https://yellow-cdn.veclightyear.com/ab5030c0/3c68b261-30f6-4b22-8cbb-8a2f5a161106.png" width="250x250">
#示例图3(参考:https://seaborn.pydata.org/examples/histogram_stacked.html) diamonds = sns.load_dataset("diamonds") ax3 = pw.Brick("ax3", (5,2)) sns.histplot(diamonds, x="price", hue="cut", multiple="stack", palette="light:m_r", edgecolor=".3", linewidth=.5, log_scale=True, ax = ax3) ax3.set_title("ax3") ax3.savefig()
<img src="https://yellow-cdn.veclightyear.com/ab5030c0/1ee01c2e-e182-4215-a2fd-b1477c87a5a5.png" width="400x400">
#示例图4(参考:https://seaborn.pydata.org/examples/grouped_violinplots.html) tips = sns.load_dataset("tips") ax4 = pw.Brick("ax4", (6,2)) sns.violinplot(data=tips, x="day", y="total_bill", hue="smoker", split=True, inner="quart", linewidth=1, palette={"Yes": "b", "No": ".85"}, ax=ax4) ax4.set_title("ax4") ax4.savefig("../img/ax4.png")
<img src="https://yellow-cdn.veclightyear.com/ab5030c0/55d95361-f046-4e05-8b53-34a3e3e70f7c.png" width="400x400">
#示例图5(参考:https://seaborn.pydata.org/examples/wide_data_lineplot.html) rs = np.random.RandomState(365) values = rs.randn(365, 4).cumsum(axis=0) dates = pd.date_range("1 1 2016", periods=365, freq="D") data = pd.DataFrame(values, dates, columns=["A", "B", "C", "D"]) data = data.rolling(7).mean() ax5 = pw.Brick("ax5", (5,2)) sns.lineplot(data=data, palette="tab10", linewidth=2.5, ax=ax5) ax5.set_xlabel("date") ax5.set_ylabel("value") ax5.set_title("ax5") ax5.savefig()
<img src="https://yellow-cdn.veclightyear.com/ab5030c0/2497b877-534c-4375-9264-d7e102aae693.png" width="400x400">

3. 排列和堆叠图表

patchworklib模块提供了两个操作符"|"和"/",可以通过简单的操作为多个图表设计整洁的布局。"|"操作符将图表并排放置,而"/"操作符将它们堆叠。

#水平排列"ax1"、"ax2"和"ax4" ax124 = ax1|ax2|ax4 ax124.savefig("../img/ax124.png")
<img src="https://yellow-cdn.veclightyear.com/ab5030c0/6a03a440-8e68-41a5-be01-58a61177154d.png" width="1000x1000">

由多个Brick对象(Bricks类对象)排列生成的对象也可以与其他Brick对象进行排列和堆叠。此外,还可以通过嵌套操作创建更复杂的布局。

ax12435 = ax124/(ax3|ax5) ax12435.savefig("../img/ax12435.png")
<img src="https://yellow-cdn.veclightyear.com/ab5030c0/3cf7eb27-1ba0-43d7-80c9-f02528890ee7.png" width="1000x1000">

你可以通过重新排列它们来快速测试另一种布局。

ax35214 = (ax3/(ax2|ax1))|(ax5/ax4) ax35214.savefig()
<img src="https://yellow-cdn.veclightyear.com/ab5030c0/5bd29bb3-d6b3-4531-9701-6fc1e3410088.png" width="1000x1000">

如果你想调整对象之间的边距,请更改.param["margin"]的值。

pw.param["margin"]=0.2 #默认值为0.5 ax35214 = (ax3/(ax2|ax1))|(ax5/ax4) ax35214.savefig("../img/ax35214_v1.1.png")
<img src="https://yellow-cdn.veclightyear.com/ab5030c0/d2c7f433-cc6f-4785-9418-24ac4d338394.png" width="1000x1000">

此外,每个图表的宽高比可以自由修改。

pw.param["margin"]=0.5 ax1.change_aspectratio((4,2)) ax3.change_aspectratio((4,1)) ax4.change_aspectratio((5,2)) ax35214_v2 = (ax3/(ax2|ax1))|(ax5/ax4) ax35214_v2.savefig()
<img src="https://yellow-cdn.veclightyear.com/ab5030c0/83c67ce7-74e1-429f-b424-c367c99f405e.png" width="1400x1400">

4. 使用标签索引打包图表(高级方法)

通过在Bricks对象中用标签名称指定Brick对象,你可以调整要打包的另一个Brick对象的位置。

ax321 = ax3/(ax2|ax1) ax321.savefig("../img/ax321.png")
<img src="https://yellow-cdn.veclightyear.com/ab5030c0/ee979f88-8820-42c1-83e3-fab51c415761.png" width="600x600">
ax3214 = ax321["ax1"]|ax4 ax3214.savefig("../img/ax3214.png")
<img src="https://yellow-cdn.veclightyear.com/ab5030c0/fd952119-ac0d-4be0-b9dc-d755c1480838.png" width="1000x1000">
ax35214_v3 = ax3214["ax3"]|ax5 ax35214_v3.savefig("../img/ax35214_v3.png")
<img src="https://yellow-cdn.veclightyear.com/ab5030c0/81da41d4-c436-4a4b-848b-a710a6f60716.png" width="1000x1000">

上述打包过程允许对象的坐标轴精确对齐。实际上,在"ax35214"和"ax35214_v2"中,ax3和ax5的底部坐标轴线并不完全对齐,而在"ax35214_v3"中,它们的底部坐标轴线完全对齐。但请注意,这种使用标签索引的打包方法会改变要打包的Brick对象的宽高比,以使其坐标轴线与其他对象对齐。

<img src="https://yellow-cdn.veclightyear.com/ab5030c0/88b50f36-94b8-4761-b51e-a776bb44e719.png" width="600x600"> <img src="https://yellow-cdn.veclightyear.com/ab5030c0/cd0f981e-8b8f-4db5-bf1f-85178f9b2abe.png" width="600x600"> <img src="https://yellow-cdn.veclightyear.com/ab5030c0/afd2b827-c79c-46a7-b8f6-7927fae50e97.png" width="600x600">

编辑推荐精选

Trae

Trae

字节跳动发布的AI编程神器IDE

Trae是一种自适应的集成开发环境(IDE),通过自动化和多元协作改变开发流程。利用Trae,团队能够更快速、精确地编写和部署代码,从而提高编程效率和项目交付速度。Trae具备上下文感知和代码自动完成功能,是提升开发效率的理想工具。

热门AI工具生产力协作转型TraeAI IDE
问小白

问小白

全能AI智能助手,随时解答生活与工作的多样问题

问小白,由元石科技研发的AI智能助手,快速准确地解答各种生活和工作问题,包括但不限于搜索、规划和社交互动,帮助用户在日常生活中提高效率,轻松管理个人事务。

聊天机器人AI助手热门AI工具AI对话
Transly

Transly

实时语音翻译/同声传译工具

Transly是一个多场景的AI大语言模型驱动的同声传译、专业翻译助手,它拥有超精准的音频识别翻译能力,几乎零延迟的使用体验和支持多国语言可以让你带它走遍全球,无论你是留学生、商务人士、韩剧美剧爱好者,还是出国游玩、多国会议、跨国追星等等,都可以满足你所有需要同传的场景需求,线上线下通用,扫除语言障碍,让全世界的语言交流不再有国界。

讯飞智文

讯飞智文

一键生成PPT和Word,让学习生活更轻松

讯飞智文是一个利用 AI 技术的项目,能够帮助用户生成 PPT 以及各类文档。无论是商业领域的市场分析报告、年度目标制定,还是学生群体的职业生涯规划、实习避坑指南,亦或是活动策划、旅游攻略等内容,它都能提供支持,帮助用户精准表达,轻松呈现各种信息。

热门AI工具AI办公办公工具讯飞智文AI在线生成PPTAI撰写助手多语种文档生成AI自动配图
讯飞星火

讯飞星火

深度推理能力全新升级,全面对标OpenAI o1

科大讯飞的星火大模型,支持语言理解、知识问答和文本创作等多功能,适用于多种文件和业务场景,提升办公和日常生活的效率。讯飞星火是一个提供丰富智能服务的平台,涵盖科技资讯、图像创作、写作辅助、编程解答、科研文献解读等功能,能为不同需求的用户提供便捷高效的帮助,助力用户轻松获取信息、解决问题,满足多样化使用场景。

模型训练热门AI工具内容创作智能问答AI开发讯飞星火大模型多语种支持智慧生活
Spark-TTS

Spark-TTS

一种基于大语言模型的高效单流解耦语音令牌文本到语音合成模型

Spark-TTS 是一个基于 PyTorch 的开源文本到语音合成项目,由多个知名机构联合参与。该项目提供了高效的 LLM(大语言模型)驱动的语音合成方案,支持语音克隆和语音创建功能,可通过命令行界面(CLI)和 Web UI 两种方式使用。用户可以根据需求调整语音的性别、音高、速度等参数,生成高质量的语音。该项目适用于多种场景,如有声读物制作、智能语音助手开发等。

咔片PPT

咔片PPT

AI助力,做PPT更简单!

咔片是一款轻量化在线演示设计工具,借助 AI 技术,实现从内容生成到智能设计的一站式 PPT 制作服务。支持多种文档格式导入生成 PPT,提供海量模板、智能美化、素材替换等功能,适用于销售、教师、学生等各类人群,能高效制作出高品质 PPT,满足不同场景演示需求。

讯飞绘文

讯飞绘文

选题、配图、成文,一站式创作,让内容运营更高效

讯飞绘文,一个AI集成平台,支持写作、选题、配图、排版和发布。高效生成适用于各类媒体的定制内容,加速品牌传播,提升内容营销效果。

AI助手热门AI工具AI创作AI辅助写作讯飞绘文内容运营个性化文章多平台分发
材料星

材料星

专业的AI公文写作平台,公文写作神器

AI 材料星,专业的 AI 公文写作辅助平台,为体制内工作人员提供高效的公文写作解决方案。拥有海量公文文库、9 大核心 AI 功能,支持 30 + 文稿类型生成,助力快速完成领导讲话、工作总结、述职报告等材料,提升办公效率,是体制打工人的得力写作神器。

openai-agents-python

openai-agents-python

OpenAI Agents SDK,助力开发者便捷使用 OpenAI 相关功能。

openai-agents-python 是 OpenAI 推出的一款强大 Python SDK,它为开发者提供了与 OpenAI 模型交互的高效工具,支持工具调用、结果处理、追踪等功能,涵盖多种应用场景,如研究助手、财务研究等,能显著提升开发效率,让开发者更轻松地利用 OpenAI 的技术优势。

下拉加载更多