【发布时间】:2018-01-23 21:38:36
【问题描述】:
我正在绘制 csv 文件中的数据,其中 y 轴上的值和 x 轴上的日期。我的数据集仅包含 15 年期间 6 月、7 月和 8 月的数据。但是,当我尝试绘制这些数据时,它会在整个期间的 x 轴上绘制所有日期,而不仅仅是 csv 文件中的夏季月份。下面是我的情节目前的样子
这是生成此图像的代码:
infile = r'data.csv'
with open(infile,'r') as f:
data = list(reader(f))
date = [parser.parse(i[10]) for i in data[1:]] #3
date = mdates.date2num(date)
date = mdates.num2date(date)
value = [i[16] for i in data[1:]]
fig = plt.figure()
plt.plot(date, value, '.r')
基本上,我试图在没有每年数据之间的所有空格的情况下获得相同的图。
这是我的数据片段(从 2002 年到 2016 年)。日期列(L 列)由字符串组成。此数据来自刚刚在 Excel 中显示的 csv 文件。
【问题讨论】:
-
你可以设置
xticks,但我认为你的情节会变得荒谬吗?您将在整个图表上出现大量偏离点,并且沿 x 轴到处都有不均匀的跳跃。从视觉上看,与您当前的图表相比,这对我来说毫无意义。 -
Of* 抱歉,您的问题是“沿 x 轴均匀分布”,这正是您已经拥有的。你的愿望似乎是有一个不均匀 x 轴,除非你打算用那个图做更多的事情,否则它真的会是我见过的最令人困惑的图表之一。你确定要这个吗?
-
...我也更喜欢你目前的表现形式。但是您可以使用 numpy.arange 或 range 创建一个数组或列表,并将其用于 x 轴参数,然后将 x 轴刻度标签更改为相应的日期。如果您查看the gallery 或example,您应该会找到does those things 的代码。
-
我认为您可能试图在一个情节中显示太多信息。你主要是想展示多年来的趋势,还是一年内的几个月?如果是前者,那么我会坚持使用与您已有的类似的东西。如果是后者,那么你可以做一些事情,比如沿着 x 轴设置几个月并绘制单独的线来代表每年。您可能还希望通过计算每年或每月的平均值/置信区间来汇总数据,具体取决于您要提出的观点。
-
您能提供一些示例数据吗?如果不是,数据的结构是什么?日期格式为 2014-07-01 的索引?还有多个类别(列)?
标签: python csv matplotlib plot