我有一个数据框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())
更新
就跟着 -
选项 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/