gpt4 book ai didi

python - 在 Pandas 中分配线条颜色

转载 作者:太空狗 更新时间:2023-10-30 00:31:41 25 4
gpt4 key购买 nike

我正在尝试在 pandas 中绘制一些数据,内置的绘图功能可以方便地为每列绘制一条线。我想要做的是根据我所做的分类手动为每条线分配一种颜色。

以下作品:

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)

我的问题是:

  • 这里发生了什么?
  • 假设我有一个不是从 0 开始或不是由连续数字组成的整数索引,我怎样才能使它工作而不必将索引转换为字符串或重新索引从 0 开始?

编辑:

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

这是正确的吗?有没有办法匹配 Series 和 DataFrame 索引?或者我是否必须确保以正确的顺序传递颜色列表?

最佳答案

这里发生了什么?

关键字参数 color 继承自 matplotlib.pyplot.plot() .文档中的详细信息并未明确说明您可以在绘图时放入颜色列表。鉴于颜色是 matplotlib 的关键字参数,我建议不要使用 Pandas 系列来保存颜色值。

我怎样才能让它工作?

使用列表而不是系列。如果您使用的 Series 的索引旨在将 DataFrame 的列与特定颜色相匹配,则您需要先对 Series 进行排序。如果列的顺序不正确,您将需要 sort the columns

# 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

关于python - 在 Pandas 中分配线条颜色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32525718/

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