我有一个大型的pandas数据框,我想创建一个图 - 这是一个简化的例子:
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import matplotlib.cm as cm
colors = iter(cm.rainbow(np.linspace(0, 1, 4)))
sample = pd.DataFrame({'X': [1,2,3,1,2,3,1,2,1,2,3],
'Y': [1,1,1,2,2,2,3,3,4,4,4]})
我想创建一个彩色编码的线图,颜色根据X列值变化(X值总是重复相同的数字,但长度并不总是相同) - 默认情节是:
plt.plot(sample['X'], sample['Y'], linestyle = '-')
但我希望自动化这个过程,所以每次X列重新启动都会有一个新的颜色 - 这是我想要的结果
plt.plot(sample['X'][0:3], sample['Y'][0:3], linestyle = '-', color = next(colors))
plt.plot(sample['X'][3:6], sample['Y'][3:6], linestyle = '-', color = next(colors))
plt.plot(sample['X'][6:8], sample['Y'][6:8], linestyle = '-', color = next(colors))
plt.plot(sample['X'][8:], sample['Y'][8:], linestyle = '-', color = next(colors))
关于如何实现这一目标的任何建议?
答案 0 :(得分:1)
我会建立你已经提出的建议:
cwaitpipenewrow, node=2
或者,如果您为数据添加额外的列:
slices = [slice(0, 3), slice(3, 6), slice(6, 8), slice(8, None)]
for _slice, color in zip(slices, colors):
plt.plot(sample['X'][_slice], sample['Y'][_slice], c=color)
plt.show()