如何在python中有选择地绘制数据

2024-04-23 11:12:51 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试使用python进行一些数据分析,并且成功地显示了数据。但是这个数字有问题。enter image description here

如你所见,x轴(日期)是相当混乱。原因是数据格式如下(每天收集):

2014-12-30,1423.98,1424.16,1407.51,1407.51
2014-12-29,1433.80,1433.84,1409.53,1424.67
...

我将第一行(日期)放入一个数组中,并将该数组用作x轴。你知道吗

我自己也有一个解决方案,就是在月份变化时只输出x轴(比如‘2014-11’、‘2014-12’、…),但我不知道有什么函数可以做到这一点。。。你知道吗

有人能帮我解决问题吗? 谢谢!你知道吗


Tags: 数据函数原因数字数组解决方案解决问题数据格式
1条回答
网友
1楼 · 发布于 2024-04-23 11:12:51

我敢打赌,在这个话题上已经有很多例子了。这在某种程度上取决于你如何准确地得到你的日期(哪种格式等等)。你知道吗

如果您没有做一些过分脱离这个世界的事情,并且使用datetime模块,那么您可以看看下面的示例。从个人经验来看,一旦滴答数达到一个非常高的数字,定位器和格式化程序很容易受到最奇怪的错误的影响。你知道吗

import matplotlib.pyplot as plt
import matplotlib as mpl
import numpy as np
from datetime import date, timedelta

#####################################
###  Creating data for plot, 
###  PLEASE include this in your next question.
#####################################
times = []
startdate = date(2014, 1, 1)
enddate = date(2016, 12, 22)
while startdate < enddate:
    times.append(startdate)
    startdate += timedelta(days=1) 

x = []
for i in range(0, len(times)):
    x.append(np.random.random(10))

第一个例子,每月和每天。几天的滴答声都在那里,我只是没有在图表上显示出来。你知道吗

months = mpl.dates.MonthLocator()
days = mpl.dates.DayLocator(1) #find every 1st day of month
monthsFormatter = mpl.dates.DateFormatter('%b')

fig, ax = plt.subplots()

ax.xaxis.set_major_locator(months)
ax.xaxis.set_major_formatter(monthsFormatter)
ax.xaxis.set_minor_locator(days)

ax.plot(times, x)

plt.show()

Locators on Month and Day basis

第二个例子是这样的,每年有一个更“详细”的格式化程序。你知道吗

years = mpl.dates.YearLocator()
months = mpl.dates.MonthLocator()
yearsFormatter = mpl.dates.DateFormatter('%Y:%b')

fig, ax = plt.subplots()

ax.xaxis.set_major_locator(years)
ax.xaxis.set_major_formatter(yearsFormatter)
ax.xaxis.set_minor_locator(months)

ax.plot(times, x)

plt.show()

看起来像:

Years and Month Locators, with formatter

相关问题 更多 >