gpt4 book ai didi

plotly - 注释因 plotly-express 的子图而异?

转载 作者:行者123 更新时间:2023-12-04 01:17:22 25 4
gpt4 key购买 nike

假设我想制作一个像这样的子图,其中每个方面都有自己的 y 尺度:

import plotly.express as px

fig = px.scatter(px.data.iris(), x='sepal_length', y='sepal_width', facet_col='species')


def update(y):
y.update(matches=None)
y.showticklabels=True

fig.for_each_yaxis(update)

enter image description here

现在假设我想添加一些注释,位置将根据分面变量而变化,我在数据框中有这个:

enter image description here

如果我使用的是 plotnine/ggplot,我可以这样做:

ggplot(df_iris, aes(x='sepal_length', y='sepal_width')) + geom_point() + facet_wrap("~species", scales="free_y") + geom_text(aes(x='x', y='y', label='label'), data=df_text) 

enter image description here

是否可以在 plotly 中做到这一点?我在处理子图和注释时陷入了困境,我知道您可以向子图添加注释,但是您必须知道行号和列号才能做到这一点,而且我不确定如何映射方面子图行/列索引的变量(物种)。

谢谢:)

最佳答案

我不确定这是否是最好的方法,但您可以尝试以下方法

import plotly.express as px
import pandas as pd

df_text = pd.DataFrame({"species":["setosa", "versicolor", "virginica"],
"x": [7, 7, 5],
"y": [3, 2, 3.5],
"label":["label1", "label2", "label3"]})

fig = px.scatter(px.data.iris(),
x='sepal_length',
y='sepal_width',
facet_col='species')

# Here are your annotations
data = px.scatter(df_text,
x="x",
y="y",
text="label",
facet_col='species')\
.update_traces(mode="text")["data"]

def update(y):
y.update(matches=None)
y.showticklabels=True

fig.for_each_yaxis(update)

for trace in data:
fig.add_trace(trace)

fig.show()

enter image description here

关于plotly - 注释因 plotly-express 的子图而异?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63127031/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com