Двухосный график, возвращающий ValueError: предел просмотра меньше 1 и является недопустимым значением даты Matplotlib - PullRequest
0 голосов
/ 18 июня 2020

Я посмотрел на другие вопросы и не нашел их, чтобы помочь в решении моей проблемы. Для справки, я просмотрел эти темы:

Моя проблема в том, что, несмотря на то, что индекс моего Pandas DataFrame является типом datetime dtype, я все равно получаю следующую ошибку:

ValueError: view limit minimum -36879.020000000004 is less than 1 and is an invalid Matplotlib date value. This often happens if you pass a non-datetime value to an axis that has datetime units

Из этого кода:

fig, ax1 = plt.subplots(figsize=(11,5)) 
color = 'tab:blue'
ax1.set_title('7 Day Avg New Cases', fontsize=16)
ax1.set_xlabel('month', fontsize=16)
ax1.set_ylabel('Avg New Cases', fontsize=16, color=color)
ax2 = sns.barplot(x='date', y='new_pos', data = df_st, palette='OrRd')
ax1.tick_params(axis='y')
ax1.grid(False)
ax2 = ax1.twinx()
color = 'tab:red'
ax2.set_ylabel('% Positive', fontsize=16, color=color)
ax2 = sns.lineplot(x='date', y='pct_pos', data = df_st, sort=False, color=color)
ax2.tick_params(axis='y', color=color)
ax2.grid(False)
plt.show()

Однако, если я запустил вышеуказанное в двух частях, это не сработает:

fig, ax1 = plt.subplots(figsize=(11,5)) 
color = 'tab:blue'
ax1.set_title('7 Day Avg New Cases', fontsize=16)
ax1.set_xlabel('month', fontsize=16)
ax1.set_ylabel('Avg New Cases', fontsize=16, color=color)
ax2 = sns.barplot(x='date', y='new_pos', data = df_st, palette='OrRd')
ax1.tick_params(axis='y')
ax1.grid(False)

Что возвращает (гистограмма сверху code):

barplot from above code

А затем запустите этот код:

color = 'tab:red'
ax2.set_ylabel('% Positive', fontsize=16, color=color)
ax2 = sns.lineplot(x='date', y='pct_pos', data = df_st, sort=False, color=color)
ax2.tick_params(axis='y', color=color)
ax2.grid(False)
plt.show()

, который возвращает (график из приведенного выше кода):

lineplot from above code

Данные фрейма данных:

        new_pos pct_pos  date
4141    120.0     0.03 2020-06-17
4142    462.0     0.03 2020-06-16
4143    259.0     0.03 2020-06-15
4144      0.0     0.03 2020-06-14
4145      0.0     0.03 2020-06-13
4146    140.0     0.03 2020-06-12
4147    177.0     0.03 2020-06-11
4148     72.0     0.03 2020-06-10
4149     66.0     0.03 2020-06-09
4150    114.0     0.03 2020-06-08
4151    146.0     0.03 2020-06-07
4152     92.0     0.03 2020-06-06
4153     96.0     0.03 2020-06-05
4154     75.0     0.03 2020-06-04
4155     64.0     0.03 2020-06-03
4156     33.0     0.03 2020-06-02
4157     59.0     0.03 2020-06-01
4158     58.0     0.03 2020-05-31
4159     54.0     0.03 2020-05-30
4160     45.0     0.03 2020-05-29

Есть идеи, как решить эту проблему?

...