Как избежать построения определенных значений ряда с помощью matplotplib - PullRequest
0 голосов
/ 29 мая 2020

Я хочу построить столбец фрейма данных с помощью matplotlib, но я не хочу видеть тенденцию, когда значение ряда равно 0 или выше. Я также хотел бы правильно видеть ось x, без наложения. Я не хочу удалять эти значения из серии, поскольку для даты важно иметь возможность видеть их как пустое пространство.

Прямо сейчас у меня есть следующий простой код:

plt.plot(data, linestyle='dashed')
plt.title('Points')
plt.ylabel('Number')
plt.xlabel('Time (days)')
plt.show(block = True)

enter image description here

Где data - это следующий df:

Tagname
01/06/2008 00:00   -45.757616
02/06/2008 00:00   -45.990457
03/06/2008 00:00   -45.393121
04/06/2008 00:00   -44.913295
05/06/2008 00:00   -44.705479
                      ...    
19/03/2012 00:00   -53.729701
20/03/2012 00:00   -53.453338
21/03/2012 00:00   -52.822274
22/03/2012 00:00   -52.814657
23/03/2012 00:00   -52.900613
Name: points_subs, Length: 3314, dtype: float64

Как я могу сделать то и другое ???

1 Ответ

0 голосов
/ 30 мая 2020

Есть функция, которая автоматически оптимизирует ось x для вас. Используется matplotlib.dates.AutoDateLocator matplotlib.dates.AutoDateLocator . Соответствует ли ваше качество вашим намерениям?

import pandas as pd
import matplotlib.pyplot as plt
import matplotlib.dates as mdates
import numpy as np

data = (np.random.randint(0, 60, (3314,)) + np.random.rand(3314)) * -1
date = pd.date_range('2008-06-01', '2017-06-27', freq='1D')
df = pd.DataFrame({'data':data}, index=pd.to_datetime(date))

fig = plt.figure(figsize=(16,9),dpi=144)
ax = fig.add_subplot(111)

plt.plot(df.index, df['data'], linestyle='dashed')

plt.title('Points')
plt.ylabel('Number')
plt.xlabel('Time (days)')

locator = mdates.AutoDateLocator()
formatter = mdates.ConciseDateFormatter(locator)

ax.xaxis.set_major_locator(locator)
ax.xaxis.set_major_formatter(formatter)

plt.show(block = True)

enter image description here

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