python - 多次调用 pd.DataFrame.plot() 后颜色一致

标签 python pandas matplotlib plot colors

我有一个数据框v,其中包含一些数字数据。

v=pd.DataFrame(data=np.random.rand(300,3))

我想在同一个matplotlib图上绘图:

  • 散点图
  • 相同点的移动平均值

我使用pd.DataFrame.plot()来做到这一点

plt.figure()
v.plot(style='o',legend=False,ax=plt.gca(),alpha=0.2,ls='')
v.rolling(7).mean().plot(legend=False,ax=plt.gca())

这很好用。

但是,第一个图绘制的点根据其行号进行着色。第二个图中的线条也会发生同样的情况。

我希望两个绘图命令之间的两种颜色保持一致,所以 通过移动平均线获得的线具有与散点中相同的颜色。如何得到它?

这是我运行代码得到的结果。 显然,我无法弄清楚红线是否对应于绿色橙色或蓝色点......

enter image description here

最佳答案

原版

我相信你需要 -

%matplotlib inline # only for jupyter notebooks
import pandas as pd
from matplotlib import pyplot as plt
import numpy as np

colors = {0: 'red', 1:'green', 2:'blue'}
v=pd.DataFrame(data=np.random.rand(300,3))
plt.figure()
v.plot(marker='o',legend=False,ax=plt.gca(),ls='', alpha=0.2, color=colors.values())
v.rolling(7).mean().plot(legend=False,ax=plt.gca(), color=colors.values())

更新

就跟着 -

选项 1(无额外的 cm 依赖项)

colors_rand = np.random.rand(len(v.columns),3)
v.plot(marker='o',legend=False,ax=plt.gca(),ls='', alpha=0.5, color=colors_rand )
    v.rolling(7).mean().plot(legend=False,ax=plt.gca(), color=colors_rand )

选项2(按照OP的建议)

v.plot(marker='o',legend=False,ax=plt.gca(),ls='', alpha=0.5, colors=cm.rainbow(np.linspace(0,1,v.shape[1]) ))
v.rolling(7).mean().plot(legend=False,ax=plt.gca(), colors=cm.rainbow(np.linspace(0,1,v.shape[1]) ))

关于python - 多次调用 pd.DataFrame.plot() 后颜色一致,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48988697/

相关文章:

python - 嵌套 python 字典中的字符串替换/格式化占位符值

python - 来自 NumPy 数组的 VisPy 动画逐点

python - 如何重新排列子图,使一个在另一个下面?

Python tkinter 将 Canvas 保存为 postscript 并添加到 pdf

python - 通过比较包含不同格式电话号码的两个数据帧列来过滤数据帧

pandas - 对数据框中的顶部行进行分组、拆分和选取

python - Pandas - 如何提取 HH :MM from datetime column in Python?

python - 如何使用 Matplotlib 在 python 中定义和绘制 10*10 数组?

testing - 如何绘制三个参数的组合

python - 使用 django 分页器显示项目编号。