簡體   English   中英

matplotlib 條形圖中的條形寬度不一樣?

[英]Bars in matplotlib bar chart are not the same width?

我試圖使用 matplotlib 和 pandas 創建一個條形圖,顯示美國 COVID-19 病例的每日變化。

  import pandas as pd
  import matplotlib.pyplot as plt

  data = pd.read_csv('https://raw.githubusercontent.com/nytimes/covid-19-data/master/us-counties.csv')
  display(data.head(10))
  df = data.groupby('date').sum()
  df['index'] = range(len(df))
  df['IsChanged'] = df['cases'].diff() 


  df.at['2020-01-21', 'IsChanged'] = 0.0

  x = df['index']
  z = df['IsChanged']

  plt.figure(figsize=(20,10))
  plt.grid(linestyle='--')
  plt.bar(x,z)
  plt.show()

我得到的圖表看起來像這樣:
.

圖表的條形寬度不均勻。 我嘗試設置一個特定的寬度,但沒有奏效。 有沒有辦法來解決這個問題?

這可以通過指定分辨率來解決。 例如,嘗試設置dpi=300 答案中的圖表是 output 的圖像,並在您的代碼中指定了 DPI。

plt.figure(figsize=(20,10),dpi=300)

在此處輸入圖像描述

雖然這不能直接回答您的問題,但當條形圖有很多條時,可能需要考慮plt.fill_between() (因為如果你不能將條形區分開來,條形圖就失去了它的目的)

例如

plt.fill_between(x, 0, z, step='mid', facecolor=(0.3, 0.3, 0.45 ,.4), edgecolor=(0, 0, 0, 1))
plt.grid(ls= ':', color='#6e6e6e', lw=0.5);

在此處輸入圖像描述

甚至:

plt.fill_between(x, 0, z, facecolor=(0.3, 0.3, 0.45 ,.4), edgecolor=(0, 0, 0, 1))
plt.grid(ls= ':', color='#6e6e6e', lw=0.5);

在此處輸入圖像描述

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM