gpt4 book ai didi

python - Pandas、matplotlib 和 plotly - 如何修复系列图例?

转载 作者:太空宇宙 更新时间:2023-11-04 01:06:55 24 4
gpt4 key购买 nike

我正在尝试从 pandas 数据帧创建交互式绘图。

但是,我无法正确显示图例

这是一个工作示例:

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import plotly.plotly as py

# sign into the plotly api
py.sign_in("***********", "***********")

# create some random dataframes
dates = pd.date_range('1/1/2000', periods=8)
df1 = pd.DataFrame(np.random.randn(8, 1), index=dates, columns=['A'])
df2 = pd.DataFrame(np.random.randn(8, 1), index=dates, columns=['B'])
df1.index.name = 'date'
df2.index.name = 'date'

现在我尝试使用 plotly 绘制数据帧。

fig, ax = plt.subplots(1,1)

df1.plot(y='A', ax=ax)
df2.plot(y='B', ax=ax)

py.iplot_mpl(fig, filename='random')

注意没有图例

Plotly - no legend

编辑:

根据下面的建议,我添加了一个 update 字典。虽然这确实显示了图例,但它弄乱了 plotly 本身:

fig, ax = plt.subplots(1,1)

df1.plot(y='A', ax=ax)
df2.plot(y='B', ax=ax)

update = dict(
layout=dict(
annotations=[dict(text=' ')], # rm erroneous 'A', 'B', ... annotations
showlegend=True # show legend
)
)
py.iplot_mpl(fig, update=update, filename='random')

enter image description here

编辑 2:

layout 字典中删除 annotations 条目会导致绘图正确显示,但图例不是 y 列名称,而是 x 列名,dataframe 的索引名

fig, ax = plt.subplots(1,1)

df1.plot(y='A', ax=ax)
df2.plot(y='B', ax=ax)

update = dict(
layout=dict(
showlegend=True # show legend
)
)
py.iplot_mpl(fig, update=update, filename='random')

这导致了以下 plotly :

enter image description here

编辑 3:

我找到了一种覆盖图例文本的方法,但它似乎有点笨拙。鉴于我已经指定了要绘制的数据框列:

df1.plot(y='A', ax=ax)

我原以为 y='A' 会导致 'A' 被用作图例标签。

似乎并非如此,虽然可以使用索引标签进行覆盖,如下所示,但感觉不对。

有没有更好的方法来实现这个结果?

update = dict(
layout=dict(
showlegend=True,
),
data=[
dict(name='A'),
dict(name='B'),
]
)
py.iplot_mpl(fig, update=update, filename='random')

enter image description here

最佳答案

图例不能很好地从 matplotlib 转换为 plotly。

幸运的是,向 matplotlib 图中添加图例非常简单:

update = dict(
layout=dict(
showlegend=True # show legend
)
)
py.iplot_mpl(fig, update=update)

查看完整工作 ipython notebook here .

有关更多信息,请参阅 plotly user guide .

关于python - Pandas、matplotlib 和 plotly - 如何修复系列图例?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29933553/

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