我有以下格式的数据:
import pandas as ps
table={'time':[1,2,3,4,5,1,2,3,4,5,1,2,3,4,5],\
'data':[1,1,2,2,2,1,2,3,4,5,1,2,2,2,3],\
'type':['a','a','a','a','a','b','b','b','b','b','c','c','c','c','c']}
df=ps.DataFrame(table,columns=['time','data','type']
我想将数据绘制成一条线连接的时间的函数,但我希望每一条线都是唯一类型的单独颜色.在此示例中,结果将是三行:每种类型a,b和c的data(time)行.任何指导表示赞赏.
我无法使用此数据生成一行-pandas.scatter将生成一个图,而pandas.plot将不生成.我一直在用循环弄乱每种类型的图,但是我没有找到直接的方法.我的数据通常具有未知数量的唯一“类型”.熊猫和/或matpltlib是否可以创建这种情节?
解决方法:
如果所有索引都正确编制,熊猫绘图功能将允许您执行此操作.但是,有时直接使用matplotlib会更容易:
import pandas as pd
import matplotlib.pyplot as plt
table={'time':[1,2,3,4,5,1,2,3,4,5,1,2,3,4,5],
'data':[1,1,2,2,2,1,2,3,4,5,1,2,2,2,3],
'type':['a','a','a','a','a','b','b','b','b','b','c','c','c','c','c']}
df=pd.DataFrame(table, columns=['time','data','type'])
groups = df.groupby('type')
fig, ax = plt.subplots()
for name, group in groups:
ax.plot(group['time'], group['data'], label=name)
ax.legend(loc='best')
plt.show()
如果您希望使用熊猫图包装器,则需要覆盖图例标签:
import pandas as pd
import matplotlib.pyplot as plt
table={'time':[1,2,3,4,5,1,2,3,4,5,1,2,3,4,5],
'data':[1,1,2,2,2,1,2,3,4,5,1,2,2,2,3],
'type':['a','a','a','a','a','b','b','b','b','b','c','c','c','c','c']}
df=pd.DataFrame(table, columns=['time','data','type'])
df.index = df['time']
groups = df[['data', 'type']].groupby('type')
fig, ax = plt.subplots()
groups.plot(ax=ax, legend=False)
names = [item[0] for item in groups]
ax.legend(ax.lines, names, loc='best')
plt.show()
标签:pandas,matplotlib,python
来源: https://codeday.me/bug/20191028/1955366.html