【问题标题】:Coloring different sections of a plot based on multi index level基于多索引级别为绘图的不同部分着色
【发布时间】:2019-09-21 10:47:10
【问题描述】:

我需要使用 pyplot 创建一个绘图,在其中我可以根据 DataFrame (df) 中的第一个索引级别为标记着色。 示例:以下所有值:A -- 红色、B -- 绿色、C -- 蓝色 我正在针对 cat2 值绘制 a1、a2、a3、a4、a5。每个值都应该在同一个图上。

我可以通过使用横截面使用子图来做到这一点:

f, a = plt.subplots(3,1)
df.xs('A').plot(ax=a[0])
df.xs('B').plot(ax=a[1])
df.xs('C').plot(ax=a[2])

子图可以让我为不同的 xs 着色,但我需要一种方法来在同一个图上进行。 Link is an image of my dataframe in csv

【问题讨论】:

  • 为什么不为每次调用使用相同的 Axis 对象来绘制并为每个调用指定不同的颜色?
  • 我是python的新手,你能告诉我怎么做吗?

标签: python-3.x dataframe matplotlib plot multi-index


【解决方案1】:

我想这样的事情会奏效。

f, a = plt.subplots(1, 1)
# Only create one subplot as all the data is meant to go on one plot only
df.xs('A').plot(ax=a, marker='D', markersize=6, markerfacecolor='red',
                markeredgecolor='red')
df.xs('B').plot(ax=a, marker='D', markersize=6, markerfacecolor='green',
                markeredgecolor='green')
df.xs('C').plot(ax=a, marker='D', markersize=6, markerfacecolor='blue',
                markeredgecolor='blue')

【讨论】:

  • 谢谢,我能够将它们放在同一个图上......但是这种方法将数据点绘制在另一个之上。无论如何我可以在同一个图上按顺序绘制它,最好不要中断?如:A数据(红色)--> B数据(绿色)---> C数据(蓝色)
  • 没有视觉效果很难理解你想要什么。
  • 如何将 df.xs('B').plot 数据点在 x 轴上向左移动 3。我可以使用相同的方法来执行 C 部分。这将实现我需要的.
  • 您需要为绘图函数提供关键字 x 和 y。例如,看看这个答案 (stackoverflow.com/a/43063196/10640534)。
猜你喜欢
  • 1970-01-01
  • 2020-04-29
  • 2013-06-09
  • 1970-01-01
  • 1970-01-01
  • 2016-09-29
  • 1970-01-01
  • 2017-08-21
  • 2021-10-16
相关资源
最近更新 更多