添加来自 matplotlib 中列名的 X 轴
add X axis that will come from the column names in matplotlib
我有绘制数据的代码,但出于某种原因,它没有在 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
将您的数据框从宽改造成长,然后进行绘图。这是一个使用我制作的类似于您的数据框的示例:
(注意:我不确定您的列名指的是什么,但我称它们为 'time' 因为它看起来像是某种时间序列。)
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'])
我有绘制数据的代码,但出于某种原因,它没有在 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
将您的数据框从宽改造成长,然后进行绘图。这是一个使用我制作的类似于您的数据框的示例:
(注意:我不确定您的列名指的是什么,但我称它们为 'time' 因为它看起来像是某种时间序列。)
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'])