Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/319.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 将整数(天数)X轴转换为月份_Python_Matplotlib - Fatal编程技术网

Python 将整数(天数)X轴转换为月份

Python 将整数(天数)X轴转换为月份,python,matplotlib,Python,Matplotlib,对于matplotlib,给定一个在x轴上使用整数表示天数的图形,如下所示: import matplotlib.pyplot as plt import numpy.random as nprnd items = [] items[0] = nprnd.randint(1000, size=470) y_data = np.row_stack((items[0])) x_data = np.arange(470) fig = plt.figure() ax1 = fig.add_subp

对于matplotlib,给定一个在x轴上使用整数表示天数的图形,如下所示:

import matplotlib.pyplot as plt
import numpy.random as nprnd

items = []
items[0] = nprnd.randint(1000, size=470)

y_data = np.row_stack((items[0]))
x_data = np.arange(470)

fig = plt.figure()
ax1 = fig.add_subplot(1, 1, 1)

ax1.fill_between(x_data, 0, items[0], color="#0026cf", alpha=1)

plt.show()
如何将给出开始日期的470天转换为在x轴上显示时间戳

例如,将图表的开始日期设置为2000年1月1日-此时图表上显示31,则显示2000年2月,x值为58,则显示2000年3月,等等。

您可以使用生成。您可以使用strftime()方法选择自己的格式

创建2000年1月1日的日期对象和一天的时间增量对象。 制作一个字符串日期列表。 尝试获取所有470个标签是有问题的——当您查看整个数据集时,确实没有足够的空间。我对你的例子有一些问题,所以我对它做了一些修改

将标签添加到x轴标记 在x轴上放大到几周:

使用每周一次的邮戳比较合理。。几行的变化

labels = [date.isoformat() for date in (start + oneday*i for i in xrange(0,470))]
labels = labels[::7]
plt.xticks(x_data[::7], labels, rotation='vertical')

您可以使用来生产。您可以使用strftime()方法选择自己的格式

创建2000年1月1日的日期对象和一天的时间增量对象。 制作一个字符串日期列表。 尝试获取所有470个标签是有问题的——当您查看整个数据集时,确实没有足够的空间。我对你的例子有一些问题,所以我对它做了一些修改

将标签添加到x轴标记 在x轴上放大到几周:

使用每周一次的邮戳比较合理。。几行的变化

labels = [date.isoformat() for date in (start + oneday*i for i in xrange(0,470))]
labels = labels[::7]
plt.xticks(x_data[::7], labels, rotation='vertical')

我不确定你在问什么,你想显示由
部分开始日期+470天表示的日期吗?你能解释一下最终结果应该是什么样子吗?@farmerjoe用一个例子更新了文章的结尾——这清楚了吗?太好了!现在对我更清楚了,我会再打给你。我不确定你在问什么,你想显示由
一些开始日期+470天所代表的日期吗?你能解释一下最终结果应该是什么样子吗?@farmerjoe用一个例子更新了文章的结尾——这清楚了吗?太好了!我现在明白多了,我再打给你。
import datetime

import matplotlib.pyplot as plt
import numpy as np
import numpy.random as nprnd

y_data = np.random.randint(0, 1000, size = 470)
##y_data = np.row_stack((items[0]))
x_data = np.arange(470)

fig = plt.figure()
ax1 = fig.add_subplot(1, 1, 1)

ax1.fill_between(x_data, 0, y_data, color="#0026cf", alpha=1)

###### date labels
start = datetime.date(2000, 1, 1)
oneday = datetime.timedelta(1)
labels = [date.isoformat() for date in (start + oneday*i for i in xrange(0,470))]
plt.xticks(x_data, labels, rotation='vertical')

plt.show()
plt.close()
labels = [date.isoformat() for date in (start + oneday*i for i in xrange(0,470))]
labels = labels[::7]
plt.xticks(x_data[::7], labels, rotation='vertical')