matplotlib.pyplot не может создать блочный график после создания линейного графика - PullRequest
0 голосов
/ 30 сентября 2019

У меня есть код, который создает блок-график, затем временной ряд, затем другой блок-график. Я использую Python 3.7.3. Ниже приведена выработка сценария. Если у меня есть такой код, читая из datasheet.csv (файл csv с первым полем как Date, а остальные как field1, field2 и т. Д.):

import matplotlib.pyplot as plt
import pandas as pd

field1 = "field1"
field2 = "field2"
field3 = "field3"
field4 = "field4"
field5 = "field5"
datasheet_df = pd.read_csv("datasheet.csv")

# Make box plot 1
datasheet_df.boxplot([field1, field2], vert=False)
plt.savefig("boxplot1.png")

# Make box plot 2
datasheet_df.boxplot([field3, field4, field5], vert=False)
plt.savefig("boxplot2.png")

# Make time series
datasheet_df.plot(x='Date', y=[field1, field2])
plt.savefig("timeseries.png")

Мыправильно получить три цифры:

Figures when box plots are done first

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

...
# Make time series
datasheet_df.plot(x='Date', y=[field1, field2])
plt.savefig("timeseries.png")

# Make box plot 1
datasheet_df.boxplot([field1, field2], vert=False)
plt.savefig("boxplot1.png")

# Make box plot 2
datasheet_df.boxplot([field3, field4, field5], vert=False)
plt.savefig("boxplot2.png")
...

Это приводит к следующим изображениям: Figures when box plots are done second

Почему это происходит? Есть ли способ получить правильное отображение графиков без изменения порядка генерации фигур?

РЕДАКТИРОВАТЬ: Я хотел бы получить некоторые отзывы о том, почему я был понижен в голосовании;просто скажи мне, как я могу улучшить, а не молча удалять свои правки.

1 Ответ

1 голос
/ 30 сентября 2019

Я думаю, что вы меняете значение оси по умолчанию x, используя x='Date'. Когда вы используете вторую и третью функции datasheet_df.plot(), она автоматически принимает x в формате Data и для других графиков. Вы можете проверить это, перетащив box plot 1 после time series в первую часть кода

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...