как установить ширину дневной гистограммы в python matplotlib - PullRequest
0 голосов
/ 16 июня 2020

Я хочу изобразить ежедневные данные о количестве осадков за 5 лет в виде гистограммы. когда ширина полос равна 1, они становятся линиями без какой-либо ширины, в то время как я изменил ширину полос, которые перекрывают друг друга, как на изображении ниже. Я хочу иметь дискретные гистограммы с красивой шириной. Это мой код.

import pandas as pd
from datetime import datetime, timedelta
from matplotlib import pyplot as plt    
data=pd.read_excel('final.xlsx')
data['Date']=pd.to_datetime(data['Date'])
date = data['Date']
amount = data['Amount'] 
plt.bar (date, amount, color='gold', edgecolor='blue', align='center', width=5)
plt.ylabel('rainfall amount (mm)')
plt.show()

image

1 Ответ

1 голос
/ 16 июня 2020

Обратите внимание: вы также можете передать Timedelta параметру width; Я считаю полезным четко указать, сколько единиц в x (например, дней здесь) займут столбцы. Кроме того, для некоторых временных рядов ширина int менее интуитивна:

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

#fake data with minute frequency for an hour
dr = pd.date_range('01-01-2016 9:00:00', '01-01-2016 10:00:00', freq='1T')
df = pd.DataFrame(np.random.rand(len(dr)), index=dr)

#graph 1, using int width
plt.figure(figsize=(10,2))
plt.bar (df.index, df[0], color='gold', edgecolor='blue', align='center',
         width=1)

#graph 2, using Timedelta width
plt.figure(figsize=(10,2))
plt.bar (df.index, df[0], color='gold', edgecolor='blue', align='center',
         width=pd.Timedelta(minutes=1))

График 1:

enter image description here

График 2:

enter image description here

Это было то, что пришло мне в голову, когда я увидел вашу проблему, но я думаю, что настоящая проблема - это количество точек данных (как @ Johan C указал) . Уже когда вы строите график 365 дней, вы уже почти не можете видеть желтый (а к 3 или 4 годам он определенно исчезнет):

enter image description here

Вы также можете см. выше, что разные полосы визуализируются с разной видимой шириной, но это только потому, что в предоставленном пространстве слишком мало пикселей, чтобы точно отображать одинаковую заливку полосы и ширину полос для каждой точки.

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