我想改变个别子情节的颜色:
1.用手指定所需的地块颜色
2.使用随机颜色
基本代码(取自1)
df = DataFrame(np.random.randn(1000, 4), index=ts.index, columns=list('ABCD'))
df = df.cumsum()
df.plot(subplots=True)
plt.legend(loc='best')
plt.show()
我试过了:
colors = ['r','g','b','r'] #first option
colors = list(['r','g','b','r']) #second option
colors = plt.cm.Paired(np.linspace(0,1,4)) #third option
df.plot(subplots=True, color=colors)
但他们所有人都没有工作。我找到了2,但我不确定如何改变这个:
plots=df.plot(subplots=True)
for color in plots:
??????
答案 0 :(得分:4)
您可以通过为style
参数提供颜色缩写列表来轻松实现此目的:
from pandas import Series, DataFrame, date_range
import matplotlib.pyplot as plt
import numpy as np
ts = Series(np.random.randn(1000), index=date_range('1/1/2000', periods=1000))
ts = ts.cumsum()
df = DataFrame(np.random.randn(1000, 4), index=ts.index, columns=list('ABCD'))
df = df.cumsum()
ax = df.plot(subplots=True, style=['r','g','b','r'], sharex=True)
plt.legend(loc='best')
plt.tight_layout()
plt.show()
如果您只想使用“标准”颜色(蓝色,绿色,红色,青色,品红色,黄色,黑色,白色),您可以定义包含颜色缩写的数组,并将这些颜色的随机序列作为参数传递到style
参数:
colors = np.array(list('bgrcmykw'))
...
ax = df.plot(subplots=True,
style=colors[np.random.randint(0, len(colors), df.shape[1])],
sharex=True)
答案 1 :(得分:2)
你必须自己遍历每个轴,并据我所知手动完成。这应该是一个功能。
df = DataFrame(np.random.randn(1000, 4), columns=list('ABCD'))
df = df.cumsum()
colors = 'r', 'g', 'b', 'k'
fig, axs = subplots(df.shape[1], 1,sharex=True, sharey=True)
for ax, color, (colname, col) in zip(axs.flat,colors,df.iteritems()):
ax.plot(col.index,col,label=colname,c=color)
ax.legend()
ax.axis('tight')
fig.tight_layout()
或者,如果索引中有日期,请执行以下操作:
import pandas.util.testing as tm
df = tm.makeTimeDataFrame()
df = df.cumsum()
colors = 'r', 'g', 'b', 'k'
fig, axs = subplots(df.shape[1], 1,sharex=True, sharey=True)
for ax, color, (colname, col) in zip(axs.flat, colors, df.iteritems()):
ax.plot(col.index, col, label=colname,c=color)
ax.legend()
ax.axis('tight')
fig.tight_layout()
fig.autofmt_xdate()
获取