python - 带有基于另一列的标记的 Pandas 线图

标签 python pandas matplotlib plotly pandas-groupby

我有一个如下所示的数据框

df:

ind group people value value_50
 1      1    5    100    1
 1      2    2    90     1
 2      1    10   80     1
 2      2    20   40     0
 3      1    7    10     0
 3      2    23   30     0

我尝试转动它们,以查看列中的“组”单个指标

df = data.pivot_table(index = data.ind, columns = ['group'], values = ['people', 'value','value_50'])
df

然后尝试在 x 轴上使用“ind”分别绘制两个组的“值”

df.plot()

enter image description here

但我不想包含图表中的所有列,而是尝试根据 df['value_50'] 进行颜色标记,并根据 df['people'] 作为 c 和 s 参数对尺寸气泡或尺寸标记进行颜色标记分别。

这将有助于识别图表上的某些点

df['value'].plot(c =df['value_50'], s = df['value'])

但收到错误

AttributeError: Unknown property s

袖扣也可以吗,因为我已经尝试过

 df['value'].iplot(c =df['value_50'], s = df['value'])

再次失败

如何使用 pandas/袖扣执行此操作?

最佳答案

您要求使用plotlyexpress,但使用plotly.graph_objs几乎同样简单且更灵活。

plotly :

enter image description here

代码 1:

import numpy as np
import plotly.graph_objs as go

# plotly setup and traces
fig = go.Figure()

# lines 1
fig.add_trace(go.Scatter(x=df.index, y=df['value'][1].values,
                                 name = 'value_1',
                                 mode = 'lines'))

# lines 2
fig.add_trace(go.Scatter(x=df.index, y=df['value'][2].values,
                                 name = 'value_2',
                                 mode = 'lines'))


# markers 1
fig.add_trace(go.Scatter(x=df.index, y=df['value'][1].values,
                                 name = 'people',
                                 mode = 'markers',
                                 marker=dict(color=df['value_50'][1], colorscale='viridis', colorbar=dict(title='value_50')),
                                 marker_size=df['people'][1]*1.8
                        )

             )

# markers 2
fig.add_trace(go.Scatter(x=df.index, y=df['value'][2].values,
                                 name = 'people',
                                 mode = 'markers',
                                 marker=dict(color=df['value_50'][2], colorscale='viridis', colorbar=dict(title='value_50')),
                                 marker_size=df['people'][2]*1.8
                        )

             )

# adjust and show final figure
fig.update_layout(legend=dict(x=-.15, y=1))
fig.show()

我仍然不能 100% 确定您在这里的目标是什么。让我知道这对您有何作用,我们可以查看详细信息。

关于python - 带有基于另一列的标记的 Pandas 线图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55343183/

相关文章:

python - 移动平均线 Pandas

python - 如何计算高分辨率图像之间的匹配特征?

python - 如何将带有表情符号名称的字符串转换为不和谐的表情符号?

python - 如何使用 `colorbar` 调色板将 `networkx` 添加到 `seaborn`? ( python 3)

python - 如何让两条线在循环内绘制为相同颜色?

python - 如何从 CSV 中读取数据到嵌套的键值对中以供将来检索?

python - 从 pandas DataFrame 插入 Access 数据库

python - 无法将 numpy 和 pandas 导入 django

python - Pandas 在一列中搜索在另一列中具有不同值的重复行

python - 在 Python 中更改堆积条形图图例