当前位置: 首页 > 知识库问答 >
问题:

指定熊猫中的线条颜色

宗政松
2023-03-14

我试图在pandas中绘制一些数据,内置的plot函数可以方便地为每列绘制一行。我想做的是根据我所做的分类手动为每一行指定一种颜色。

以下工作:

df = pd.DataFrame({'1': [1, 2, 3, 4], '2': [1, 2, 1, 2]})
s = pd.Series(['c','y'], index=['1','2'])
df.plot(color = s)

但是,当我的索引是整数时,它不再工作,并作为KeyError抛出:

df = pd.DataFrame({1: [1, 2, 3, 4], 2: [1, 2, 1, 2]})
s = pd.Series(['c','y'], index=[1,2])
df.plot(color = s)

我的理解是,当使用整数索引时,它必须从0开始。这是我的猜测,因为以下方法也有效:

df = pd.DataFrame({0: [1, 2, 3, 4], 1: [1, 2, 1, 2]})
s = pd.Series(['c','y'], index=[1,0])
df.plot(color = s)

我的问题是:

  • 这里发生了什么

编辑:

我意识到,即使在第一种情况下,代码也没有达到我预期的效果。似乎只有当DataFrame和Series都是从0开始的整数索引时,pandas才匹配它们的索引。如果不是这样,则抛出一个KeyError,或者如果索引是str,则使用元素的顺序。

这是正确的吗?有没有办法匹配序列和数据帧索引?或者我必须确保按正确的顺序通过颜色列表吗?

共有3个答案

苏星宇
2023-03-14

要设置每行的颜色,可以使用参数style。例如:

df = pd.DataFrame({'A': [1, 2, 4], 'B': [1, 3, 9]})
df.plot(style={'A': 'r', 'B': 'g'})

使用表单标记|行|颜色中的快捷字符串表示法,您还可以设置标记和行类型:

df = pd.DataFrame({'A': [1, 2, 4], 'B': [1, 3, 9]})
df.plot(style={'A': '*:r', 'B': '+--g'})
薛文斌
2023-03-14

尝试:

df.plot(color = s.values)

这将分配颜色,无论索引的比例如何。

编辑:

我尝试了三个专栏:

df = pd.DataFrame({'1': [1, 2, 3, 4], '2': [1, 2, 1, 2], '3': [4, 3, 2, 1]})
s = pd.Series(['c','y','r'], index=[1,3,2])
df.plot(color = s.sort_index().values)

并对它工作的系列进行排序。

黄弘深
2023-03-14

这里发生了什么?

关键字参数颜色继承自matplotlib。pyplot。plot()。文档中的详细信息没有明确说明打印时可以输入颜色列表。鉴于颜色是matplotlib中的一个关键字参数,我建议不要使用熊猫系列来保存颜色值。

我怎样才能让这个工作?

使用列表而不是序列。如果您使用的序列的索引旨在将数据帧的列与特定颜色相匹配,则需要首先对序列进行排序。如果列不按顺序排列,则还需要对列进行排序。

# Option 1
s = s.sort_index()
df.plot(color = s.values) # as per Fiabetto's answer

# Option 2
df.plot(color = ['c', 'y']) # other method
 类似资料:
  • 问题内容: 我试图在熊猫中绘制一些数据,并且内置的绘图功能可以方便地在每列中绘制一行。我要做的是根据我进行的分类为每行手动分配颜色。 以下作品: 但是,当我的索引是整数时,它将不再起作用并抛出为KeyError: 我的理解是,当使用整数索引时,它必须以某种方式从0开始。这是我的猜测,因为以下内容同样适用: 我的问题是: 这是怎么回事 假设我有一个不是从0开始或不是由连续数字组成的整数索引,那么我如

  • 在使用plot命令来为数据作图时,你可以自定义颜色,线型和标记(比如加号和圆圈)。 plot(x,y,'color_style_marker') color_style_marker是一个由一到四个字符构成的字符串(用单引号括起来),用以定义颜色,线型和标记形式: 颜色字符串有'c', 'm', 'y', 'r', 'g', 'b', 'w',和'k'。分别表示青,红紫,黄,红,绿,白和黑。 线

  • 我试图开发以下过滤器与熊猫数据帧: 我有四列,,,和 如何将其作为聚合函数编写? 下面是一个编写效率低下的工作示例: 输出:

  • 问题内容: 如何将条件逻辑应用于Pandas DataFrame。 请参见下面显示的DataFrame, 我的原始数据显示在“数据”列中,并且期望的输出显示在其旁边。如果“数据”中的数字小于2.5,则所需的输出为False。 我可以应用循环并重新构建DataFrame …但是那是“非Python的” 问题答案: 只需将列与该值进行比较:

  • 问题内容: 我有以下数据框 基本上我可以如下过滤行 我可以如下所示删除/删除一行 但是我想根据条件删除一定数量的行,我该怎么做? 问题答案: 最好的是但需要反转条件-使所有值相等且更高,如下所示: 与功能相同: 另一种可能的解决方案是通过以下方法反转掩码:

  • 以下是具有自定义颜色的折线图的示例。 我们已经在Google Charts Configuration Syntax一章中看到了用于绘制图表的配置 。 现在,让我们看一个带有自定义颜色的折线图的示例。 配置 (Configurations) 我们使用background配置来改变图表线的颜色。 options.setColors("#a52714", "#0000ff", "#ff0000", "