我正在学习使用Python,作为家庭作业,我们应该读取与Covid-19数据相关的CSV文件。
import pandas as pd
import matplotlib.pyplot as plt
def graficarUnPais (data, pais):
x1 = []
y1 = []
x2 = []
y2 = []
for record in data:
if (record['location'] == pais):
if ((not (mt.isnan(record['total_cases'])))):
x1.append(record['date'])
y1.append(record['total_cases'])
if ((not (mt.isnan(record['total_deaths'])))):
x2.append(record['date'])
y2.append(record['total_deaths'])
plt.title("Casos y Muertes Totales")
plt.xlabel('Día')
plt.ylabel('Casos')
plt.plot(x1, y1, label='Casos Totales')
plt.plot(x2, y2, label='Muertes Totales')
plt.xticks(rotation=90)
plt.legend()
plt.show()
archivo = pd.read_csv('full_data.csv')
data_list = archivo.to_dict("list")
data_records = archivo.to_dict("records")
paises = 'Argentina'
graficarUnPais(data_records, pais)
因此,图形是正确的,但是,我不喜欢这种格式,日期全都粉碎了。我想知道是否有一种方法可以将所有x轴点分开一些。我正在使用PyCharm。
我不知道有没有办法像水平滚动条或类似的东西
这是图形的图片:
有很多选项,包括设置要显示为xtick
数组的值(请参见例如更改matplotlib中x或y轴上的“刻度频率”?)。就您而言,您可以简单地使用它,
skip = 5
plt.xticks(x1[::skip]))
注意我假设x1=x2
。但是,执行此操作的正确方法可能是使用简洁的数据格式化程序功能,
https://matplotlib.org/3.1.0/gallery/ticks_and_spines/date_concise_formatter.html
编辑:如果您确实希望滑块集中在整体上,则可以执行以下操作,
import numpy as np
import matplotlib.pyplot as plt
from matplotlib.widgets import Slider
import matplotlib.dates as mdates
import datetime as dt
window = 20
fig, ax = plt.subplots()
fig.subplots_adjust(bottom=0.25)
#Generating dates using https://stackoverflow.com/questions/9627686/plotting-dates-on-the-x-axis-with-pythons-matplotlib
N = 100
y = np.random.rand(N)
now = dt.datetime.now()
then = now + dt.timedelta(days=100)
days = mdates.drange(now,then,dt.timedelta(days=1))
ax.xaxis.set_major_formatter(mdates.DateFormatter('%Y-%m-%d'))
ax.xaxis.set_major_locator(mdates.DayLocator(interval=5))
ax.plot(days, y)
axshow = plt.axes([0.25, 0.1, 0.65, 0.03])
s = Slider(axshow, 'Range', 0, N, valinit=0, valstep=1)
def update(val):
ax.set_xlim(days[int(val)],days[int(val)+window])
s.on_changed(update)
fig.show()
您可以使用滑块进行选择,
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句