【发布时间】:2021-10-05 16:18:38
【问题描述】:
我有这张图表,其中我的 x 和 y 值看起来很乱。我相信这是因为所有的值都聚集在一起,因为它们有 552 个。我将 x 值简化为月份和年份,这样可以更好地分散 x 值,但是我认为这就是图表看起来像楼梯而不是线性的原因:
这是我的代码。我只使用matplotlib 绘制图表,使用SQL 帮助组织this csv 文件中的数据。如何简化我的 x 和 y 值?
from matplotlib import pyplot as plt
from cs50 import SQL
import datetime
def make_list(query, thelist, key): # format list so not dict
for i in query:
thelist.append(i[key])
return thelist
plt.title("Covid Cases")
plt.xlabel("Time")
plt.ylabel("Number of Cases")
# Each date has the countries' case reports
db = SQL("sqlite:///data.db")
# create list of dates for x axis
datesDict = db.execute("SELECT Date FROM countries WHERE Country = 'Afghanistan'")
dates = []
dates = make_list(datesDict, dates, 'Date')
for i in range(len(dates)): # format date
dates[i] = datetime.datetime.strptime(dates[i], '%Y-%m-%d').strftime("%b %Y")
# create list of confirmed cases
select_country = "United Kingdom"
find_confirmed = db.execute("SELECT Confirmed FROM countries WHERE Country = ?", select_country)
confirmed = []
confirmed = make_list(find_confirmed, confirmed, "Confirmed")
# plot
plt.plot(dates, confirmed, color = "red")
plt.show()
【问题讨论】:
-
当数据是字符串时会发生这种情况。由于
strftime,这里的日期肯定是字符串。将日期保留为实际的datetime对象并使用matplotlib.dates.DateFormatter('%b %Y')。 -
您还应该仔细检查 SQL 结果是字符串还是数字。
-
非常感谢,它看起来好多了。我应该把
matplotlib.dates.DateFormatter('%b %Y')放在哪里?间距现在看起来不错,但显示的是 YYYY-MM,而不是 Jan 2020。
标签: python matplotlib