Python 添加来自matplotlib中列名的X轴
我有一些代码可以绘制我的数据,但由于某些原因,它没有显示X轴上的值。 X轴的值通常是数字列名称: 这是X轴: 以下是我创建图表的方式:Python 添加来自matplotlib中列名的X轴,python,matplotlib,axis,Python,Matplotlib,Axis,我有一些代码可以绘制我的数据,但由于某些原因,它没有显示X轴上的值。 X轴的值通常是数字列名称: 这是X轴: 以下是我创建图表的方式: SavitzkyGolay(new_db[new_db['hour']=='12:00'].iloc[:,2:],25,2).T.plot(title='17/06/2019 12:00',figsize=(17,10)) plt.legend(new_db['plant']) 我的最终目标是使这些值位于X轴。我建议使用melt将数据帧从宽改长,然后进行
SavitzkyGolay(new_db[new_db['hour']=='12:00'].iloc[:,2:],25,2).T.plot(title='17/06/2019 12:00',figsize=(17,10))
plt.legend(new_db['plant'])
我的最终目标是使这些值位于X轴。我建议使用
melt
将数据帧从宽改长,然后进行打印。下面是一个使用我制作的数据帧的示例,该数据帧与您的数据帧相似:
(注意:我不确定你的列名指的是什么,但我称它们为“时间”,因为它看起来像某种时间序列。)
import pandas as pd
import matplotlib.pyplot as plt
df = pd.DataFrame({'plant' : [1,2,3],
'hour' : ['12:00','12:00','12:00'],
'410.25' : [0.061202, 0.07654, 0.085432],
'411.11' : [0.058917, 0.06543, 0.071234],
'412.78' : [0.056170, 0.05769, 0.067843],
'413.98' : [0.053595, 0.05678, 0.063786],
'414.41' : [0.052761, 0.05432, 0.061685]})
df2 = df.melt(id_vars = ['plant', 'hour'], var_name = 'time', value_name = 'value').sort_values(['plant', 'time'])
df2
plant hour time value
0 1 12:00 410.25 0.061202
3 1 12:00 411.11 0.058917
6 1 12:00 412.78 0.056170
9 1 12:00 413.98 0.053595
12 1 12:00 414.41 0.052761
1 2 12:00 410.25 0.076540
4 2 12:00 411.11 0.065430
7 2 12:00 412.78 0.057690
10 2 12:00 413.98 0.056780
13 2 12:00 414.41 0.054320
2 3 12:00 410.25 0.085432
5 3 12:00 411.11 0.071234
8 3 12:00 412.78 0.067843
11 3 12:00 413.98 0.063786
14 3 12:00 414.41 0.061685
for n in range(df2['plant'].max()+1):
plt.plot(df2.loc[df2['plant'] == n, 'time'], df2.loc[df2['plant'] == n, 'value'])