折线图使用多个列值

时间:2018-07-26 23:40:11

标签: python pandas matplotlib subplot

我很难找到一个与我需要实现的示例类似的示例。我需要使用以下格式为CSV的每个记录生成子图:

Batch process name, Mon, Tue, Wed, Thu,Fri,Sat,Sun

Batch process 1 ,10,5,14,2,4,5,2
Batch process 2 ,13,4,11,2,4,5,7
Batch process 3 ,8,5,14,2,4,8,4
Batch process 4 ,0,5,13,2,4,9,9
Batch process 5 ,10,5,14,2,4,10,7
Batch process 6 ,0,5,14,2,4,12,0
...
Batch process ... ,10,5,14,2,14,9,10
...

Picture example

对于每个过程(CSV中的记录),我假装代表一个子图,其中记录的每一列均表示Y值(每个子图的Y轴都有7个值)。 X值应为周一,周二,周三,周四,周五,周六,周日。

每个子图之间的分隔是为了确保每个图都有自己的比例尺。

关于如何实施的任何建议?

预先感谢

1 个答案:

答案 0 :(得分:0)

这是我在上面的示例中使用的代码-完全硬编码。

import pandas as pd
import numpy as np
import matplotlib
matplotlib.use('agg')
import matplotlib.pyplot as plt

# Generate random data
colnames=['TIME', 'X', 'Y', 'Z'] 

df = pd.DataFrame(np.random.randn(96,8),
                  columns=['Batch process 1', 'Batch Process 2', 'Batch Process 3', 'Bath Process 4', 'Batch Proces 5', 'Batch Process 6', '...', 'Batch Process 100'])

# Plotting
df.plot(kind='line', subplots=True, grid=True, title="Batch Process duration (minutes)",
    layout=(4, 3), sharex=True, sharey=False, legend=False,    
    style=['r', 'r', 'r', 'g', 'g', 'g', 'b', 'r'],
    xticks=np.arange(0, len(df), 16))

[ax.legend(loc=1) for ax in plt.gcf().axes]


plt.savefig('plot.png')