Python 如何使用matplotlib根据x轴上的特定日期打印数据
我有一个由日期-值对组成的数据集。我想把它们画成一个条形图,在x轴上标出具体的日期 我的问题是Python 如何使用matplotlib根据x轴上的特定日期打印数据,python,date,matplotlib,Python,Date,Matplotlib,我有一个由日期-值对组成的数据集。我想把它们画成一个条形图,在x轴上标出具体的日期 我的问题是matplotlib在整个日期范围内分发xtick;并使用点绘制数据 日期都是datetime对象。以下是数据集的示例: data = [(DT.datetime.strptime('2010-02-05', "%Y-%m-%d"), 123), (DT.datetime.strptime('2010-02-19', "%Y-%m-%d"), 678), (DT.date
matplotlib
在整个日期范围内分发xtick
;并使用点绘制数据
日期都是datetime
对象。以下是数据集的示例:
data = [(DT.datetime.strptime('2010-02-05', "%Y-%m-%d"), 123),
(DT.datetime.strptime('2010-02-19', "%Y-%m-%d"), 678),
(DT.datetime.strptime('2010-03-05', "%Y-%m-%d"), 987),
(DT.datetime.strptime('2010-03-19', "%Y-%m-%d"), 345)]
下面是一个使用pyplot
import datetime as DT
from matplotlib import pyplot as plt
data = [(DT.datetime.strptime('2010-02-05', "%Y-%m-%d"), 123),
(DT.datetime.strptime('2010-02-19', "%Y-%m-%d"), 678),
(DT.datetime.strptime('2010-03-05', "%Y-%m-%d"), 987),
(DT.datetime.strptime('2010-03-19', "%Y-%m-%d"), 345)]
x = [date for (date, value) in data]
y = [value for (date, value) in data]
fig = plt.figure()
graph = fig.add_subplot(111)
graph.plot_date(x,y)
plt.show()
问题摘要:我的情况更像是有一个
Axes
实例准备就绪(由上面代码中的graph
引用),我希望执行以下操作:
xtick
与确切的日期值相对应。我听说过matplotlib.dates.DateLocator
,但我不知道如何创建一个,然后将它与特定的轴关联起来李>
更严格地控制所使用的图形类型(条形图、直线图、点图等)
您所做的非常简单,只使用plot而不是plot_date是最简单的。plot_date适用于更复杂的情况,但设置您需要的内容可以轻松完成
e、 例如,根据您上面的示例:
import datetime as DT
from matplotlib import pyplot as plt
from matplotlib.dates import date2num
data = [(DT.datetime.strptime('2010-02-05', "%Y-%m-%d"), 123),
(DT.datetime.strptime('2010-02-19', "%Y-%m-%d"), 678),
(DT.datetime.strptime('2010-03-05', "%Y-%m-%d"), 987),
(DT.datetime.strptime('2010-03-19', "%Y-%m-%d"), 345)]
x = [date2num(date) for (date, value) in data]
y = [value for (date, value) in data]
fig = plt.figure()
graph = fig.add_subplot(111)
# Plot the data as a red line with round markers
graph.plot(x,y,'r-o')
# Set the xtick locations to correspond to just the dates you entered.
graph.set_xticks(x)
# Set the xtick labels to correspond to just the dates you entered.
graph.set_xticklabels(
[date.strftime("%Y-%m-%d") for (date, value) in data]
)
plt.show()
如果您喜欢条形图,只需使用。要了解如何设置直线和标记样式,请参见
只是一个提示:由于您的问题实际上纯粹是关于matplotlib的,并且没有任何特定于wxWidgets的内容,因此如果您更改示例以使用matplotlib.pyplot
中的函数,而不使用wx内容,可能会使事情变得更简单。@David:已修复。谢谢,我意识到可能会有更多的人能够阅读matplotlib
+pyplot
而不是matplotlib
+wx