Панель сюжета Pandas: на сюжете появляются легенды о других столбцах - PullRequest
0 голосов
/ 27 октября 2018

У меня есть следующий код и запустить его на Jupyter.

# Make the 4 plots:
import matplotlib.pyplot as plt
# Dwell Time
ax = hour_17['Average Dwell Time'].plot(kind='bar', figsize=(15, 10), 
legend=True, fontsize=12)
ax.set_xlabel("5-minutes interval between 17:00-18:00", fontsize=12)
ax.set_ylabel("Time (sec)", fontsize=12)
plt.savefig('name1.jpeg')

# Waiting Time
ax = hour_17['Average Waiting Time'].plot(kind='bar', figsize=(15, 10), 
legend=True, fontsize=12)
ax.set_xlabel("5-minutes interval between 17:00-18:00", fontsize=12)
ax.set_ylabel("Time (sec)", fontsize=12)
plt.savefig('name2.jpeg')

В связи с этим возникают следующие проблемы: Первый график отображает указанный столбец и легенду, а второй график содержит две легенды: Среднее время ожидания и Среднее время задержки и отображает ту же информацию, что и первый график. На самом деле мне приходится наносить данные из 4 столбцов, поэтому последний график содержит 4 легенды.

Есть идеи о том, что происходит? Спасибо!

1 Ответ

0 голосов
/ 27 октября 2018

То, что вы делаете в своем коде, - это сохранение данных графика для обоих графиков в ax, следовательно, дополнительная легенда. В идеале вы хотите использовать стиль кодирования plt.subplots(), чтобы предотвратить это. У вас есть два варианта:

  1. Переименуйте топор в другое время (возможно, ax2) для времени ожидания.
  2. Инициализируйте отдельный график, используя plt.subplots ()

Третий вариант - вообще не использовать стиль fig, ax, а напрямую использовать метод plt.plot. Существует много дискуссий о том, почему это плохая идея. Этот пост объясняет разницу в методах.

Если вы хотите сделать два отдельных графика, используйте метод одного графика ниже, только дважды. Если вы хотите объединить графики, вы можете использовать второй метод. Это из документации matplotlib здесь .

#Creates just a figure and only one subplot
fig, ax = plt.subplots()
ax.plot(x, y)
ax.set_title('Simple plot')

#Creates two subplots and unpacks the output array immediately
f, (ax1, ax2) = plt.subplots(1, 2, sharey=True)
ax1.plot(x, y)
ax1.set_title('Sharing Y axis')
ax2.scatter(x, y)
...