添加来自 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'])