matplotlib 如何解决条形图x轴过度拥挤的问题

brqmpdu1  于 2023-11-22  发布在  其他
关注(0)|答案(1)|浏览(251)

下面是一个Python程序,它执行以下操作:

  • 对treasury.gov进行API调用以检索数据
  • 将数据存储在Pandas框架中
  • 将数据绘制为条形图
  1. import requests
  2. import pandas as pd
  3. import matplotlib.pyplot as plt
  4. date = '1900-01-01'
  5. transaction_type = 'Withdrawals'
  6. transaction_catg = 'Interest on Treasury Securities'
  7. page_size = 10000
  8. url = 'https://api.fiscaldata.treasury.gov/services/api/fiscal_service/v1/accounting/dts/deposits_withdrawals_operating_cash'
  9. url_params = f'?filter=record_date:gt:{date},transaction_type:eq:{transaction_type},transaction_catg:eq:{transaction_catg}&page[size]={page_size}'
  10. response = requests.get(url + url_params)
  11. result_json = response.json()
  12. df = pd.DataFrame(result_json['data'])
  13. # Convert transaction_today_amt to numeric
  14. df['transaction_today_amt'] = pd.to_numeric(df['transaction_today_amt'])
  15. df.plot.bar(x='record_date', y='transaction_today_amt')
  16. plt.show()

字符串
这是我得到的结果图表:


的数据
如您所见,x轴标签太多。

提问

如何设置图表以使x轴标签清晰可辨?

35g0bw71

35g0bw711#

  • 'record_date'值是字符串,而不是日期时间。
  • df.record_date = pd.to_datetime(df.record_date)
  • 通常情况下,线图应用于连续时间序列数据。

Line Plot

  1. ax = df.plot(x='record_date', y='transaction_today_amt', figsize=(12, 7))

字符串


的数据

散布图

  1. ax = df.plot(kind='scatter', x='record_date', y='transaction_today_amt', marker='.', figsize=(12, 7))


条形图

  • 直接使用matplotlib,因为xtick是日期时间序数,它将用Year标记x轴。
  • ax.get_xticks()array([12418., 13149., 13879., 14610., 15340., 16071., 16801., 17532., 18262., 18993., 19723.])
  1. fig, ax = plt.subplots(figsize=(8, 5), dpi=200)
  2. ax.bar(x='record_date', height='transaction_today_amt', data=df)
  3. ax.set_yscale('log')


  • pandas将xtick视为离散的,并绘制所有xtick。
  1. ax = df.plot(kind='bar', x='record_date', y='transaction_today_amt', figsize=(12, 7))


展开查看全部

相关问题