2016-08-25 4 views
-1

Я пытаюсь построить линейный граф с несколькими строками в нем, по одному для каждой группы. Ось X будет часом, а ось y будет счетчиком. Поскольку в DataFrame есть 3 группы, у меня будет 3 строки в одном графике. Это код, который я использовал, но не уверен, где я ошибаюсь.Построить несколько строк в линейном графике с использованием matplotlib

Group  Hour   Count 
G1   1    40 
G2   1    300 
G1   2    400 
G2   2    80 
G3   2    1211 

код используется:

fig, ax = plt.subplots() 
labels = [] 
for key, grp in df1.groupby(['Group']): 
    ax = grp.plot(ax=ax, kind='line', x='x', y='y', c=key) 
    labels.append(key) 
lines, _ = ax.get_legend_handles_labels() 
ax.legend(lines, labels, loc='best') 
plt.show() 
+0

Как вы можете получить 3 строки из 5 точек данных? Вы имеете в виду 2 линии и 1 балл? G3 имеет только одну запись. – lanery

+0

Одна строка для каждой группы (G1, G2 и G3) – user3447653

+1

Как вы получите строку для G3, так как вам понадобится две точки, чтобы сформировать линию? –

ответ

2

Вы можете использовать df.pivot и сэкономить несколько строк

df.pivot('Hour', 'Group', 'Count').plot(kind='line', marker='o') 

enter image description here

G3 строится как точка, потому что есть только одна точка (2 часа, 1211), связанных с ним.

+0

Есть ли способ установить интервал между точками по оси y? Как и в оси y, мне нужно, чтобы числа увеличивались на 50, начиная с 0 – user3447653

+0

. Один из способов - добавить 'yticks = np.arange (0, df ['Count']. Max(), 50)' в качестве аргумента «заговорить». Другие методы более подробно описаны в других сообщениях stackoverflow. Вот, например, http://stackoverflow.com/questions/12608788/changing-the-tick-frequency-on-x-or-y-axis-in-matplotlib – lanery

Смежные вопросы