繁体   English   中英

多次调用pd.DataFrame.plot()后保持一致的颜色

[英]consistent colors after multiple calls of pd.DataFrame.plot()

我有一个带有一些数字数据的数据框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())

这很好。

但是,在第一个图上绘制的点将根据其行号进行着色。 第二个图中的线条也一样。

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

这是我运行代码的地方。 显然,我不知道红线是否对应于绿色的橙色或蓝色点...

在此处输入图片说明

原版的

我相信您需要-

%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())

UPDATE

随便-

选项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]) ))

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM