首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Plotly:如何根据一个条件用颜色绘制多个图?

Plotly:如何根据一个条件用颜色绘制多个图?
EN

Stack Overflow用户
提问于 2020-10-27 18:37:13
回答 1查看 442关注 0票数 1

我想使用Python中的for循环在df中制作多个Plotly散点图(每列一个),这样我就可以按预期工作了。

然后,我希望绘图的颜色是数据帧中最后一个值的条件。例如:如果最后一行高于或低于5,那么在本例中,我希望B列的绘图具有与A和C不同的颜色。

代码语言:javascript
复制
import plotly.express as px
import pandas as pd

df = pd.DataFrame({'A': [3, 1, 2, 3],
                   'B': [5, 6, 7, 8],
                   'C': [2, 1, 6, 3]})
df

     A    B    C
0    3    5    2
1    1    6    1
2    2    7    6
3    3    8    3

使用Plotly和for loop制作绘图:

代码语言:javascript
复制
plots = {}

for i in df.columns:
    if df.iloc[-1] >= 5:
        plots[i] = px.scatter(df, color_discrete_sequence=["red"], x="A", y=i)
    else:
        plots[i] = px.scatter(df, color_discrete_sequence=["blue"], x="A", y=i)

在这里,我希望能够用图‘a’,图‘B’和图‘C’显示每个图,但我希望图A和C是蓝色的,而图B是红色的。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-10-28 16:12:04

从结构上看,您的方法似乎很好。但有一些细节可能会导致一些问题。df.iloc[-1] >= 5很快就会引发错误,所以我改用dfx.iloc[-1].values >= 5。您的数据帧子设置也不起作用。当您逐列设置数据帧时,通常得到的是pandas序列,而不是pandas数据帧。并且它们的属性也不相同。考虑到这些细节,我将下面的代码组合在一起,通过调用例如plots[2].show()来生成以下图

图1

试一试,让我知道它对你的效果如何。

完整代码:

代码语言:javascript
复制
import plotly.express as px
import pandas as pd

df = pd.DataFrame({'A': [3, 1, 2, 3],
                   'B': [5, 6, 7, 8],
                   'C': [2, 1, 6, 3]})

plots = {}

for i, col in enumerate(df.columns):
    dfx = df[col].to_frame()
    print(dfx)
    if dfx.iloc[-1].values >= 5:
        plots[i] = px.scatter(df, color_discrete_sequence=["red"], x=df[col].index, y=df[col])
    else:
        plots[i] = px.scatter(df, color_discrete_sequence=["blue"], x=df[col].index, y=df[col])

plots[2].show()
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64552612

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档