python - 如何阻止 matplotlib 跳过数据中的空白?
问题描述
我有这个简单的 csv:
date,count
2020-07-09,144.0
2020-07-10,143.5
2020-07-12,145.5
2020-07-13,144.5
2020-07-14,146.0
2020-07-20,145.5
2020-07-21,146.0
2020-07-24,145.5
2020-07-28,143.0
2020-08-05,146.0
2020-08-10,147.0
2020-08-11,147.5
2020-08-14,146.5
2020-09-01,143.5
2020-09-02,143.0
2020-09-09,144.5
2020-09-10,143.5
2020-09-25,144.0
2021-09-21,132.4
2021-09-23,131.2
2021-09-25,131.0
2021-09-26,130.8
2021-09-27,130.6
2021-09-28,128.4
2021-09-30,126.8
2021-10-02,126.2
如果我将它复制到excel中并散点图,它看起来像这样
这是对的; 中间应该有很大的差距(仔细看数据,从2020年跳到2021年)
但是,如果我在 python 中这样做:
import matplotlib.pyplot as plt
import pandas as pd
data = pd.read_csv('data.csv')
data.plot.scatter('date', 'count')
plt.show()
它看起来像这样:
它均匀地间隔它们在间隙处消失了。我该如何阻止这种行为?我试着做
plt.xticks = data.date
但这并没有什么不同。
解决方案
我不完全知道数据中列的类型,但这可能是因为“日期”列的 tpye 是字符串。所以python不理解可比较的价值。在绘图之前尝试转换它的类型。
data['date'] = pd.to_datetime(data['date'])
推荐阅读
- javascript - TypeError: table.select(...).then 不是函数?
- css - 如何使用css相对于其百分比宽度制作div的百分比高度?
- r - 使用 censusapi 制作贫困率等值线图
- php - 为什么添加 CSS 后我的 PHP 代码中没有显示错误消息?
- chart.js - chartjs中的标签
- jquery - 使用 jquery 将带有隐藏字段的数组发送到控制器
- c++ - 双指针如何用于链表实现?
- c++ - || (或)C/++ 预处理器指令中的等价物?
- java - 如何运行我在 Intellij OUTSIDE 的 Intellij 上编写的 java 程序?
- python - SyntaxError:在文件 {the location of the thing} 第 138 行中以 '\xe2' 开头的非 UTF-8 代码,但未声明编码;见 http://python.org/