【问题标题】:color by a column name using plotly使用 plotly 按列名着色
【发布时间】:2021-12-25 03:41:15
【问题描述】:

我有以下格式的数据框:

 id     distance    value    is_match
 1      234         0.8      True 
 2      314         0.5      False
 3      904         0.1      False
 4      123         0.4      False
 5      287         0.9      True 

我尝试使用 plotly 绘制它。 X 轴将具有“距离”,y 轴将具有“值”并使用“is_match”为圆圈着色。使用以下代码:

import plotly.express as px
px.scatter(df, x='distance', y='value', color='is_match')

但这并不基于“is_match”列的颜色代码。

任何线索将不胜感激。

【问题讨论】:

  • 显示的代码和数据集似乎对我来说可以正常工作。我得到this plot(版本:plotly 5.3.1 pandas 1.3.4)
  • @HenryEcker 数据框大小有限制吗?我有一个 800 行的数据框,它没有绘制所有内容
  • 不知道DataFrame大小有没有限制。我确实知道,如果有这样的限制,它将远高于 800 行。泰坦尼克号数据集绘制得很好,有 891 行(例如)

标签: pandas plotly plotly-python


【解决方案1】:
  • 工作正常。根据您的样本中的 cmets 生成了更大的数据集
  • 当点数为 10**5 时,第二条迹线 (True) 占主导地位,因为它高于第一条迹线 (False)
import io
import pandas as pd
import numpy as np
import plotly.express as px

df = pd.read_csv(io.StringIO("""id     distance    value    is_match
 1      234         0.8      True 
 2      314         0.5      False
 3      904         0.1      False
 4      123         0.4      False
 5      287         0.9      True """), sep="\s+")


ROWS = 10**4
df = pd.DataFrame({"distance":np.random.randint(df["distance"].min(), df["distance"].max(), ROWS),
             "value":np.random.uniform(df["value"].min(), df["value"].max(), ROWS),
             "is_match":np.random.randint(0,2,ROWS).astype(bool)})

px.scatter(df, x='distance', y='value', color='is_match')


【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-09-05
    • 2020-07-22
    • 2018-10-16
    • 1970-01-01
    • 2013-01-30
    • 2020-04-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多