seaborn轴范围不适合Python中的数据范围
我试图创建一个简单的散点图(我在过去创建了几个),因为我想了解服务台创建的票据和服务台关闭的票据之间的关系比率。这两个特征是时间戳,但当我绘制图表时,X轴和Y轴的范围似乎比所需的范围大得多,因为我从2017年到2019年的数据以及从2000年到2020年的图表。我已尝试将seaborn轴范围不适合Python中的数据范围,python,python-3.x,matplotlib,jupyter-notebook,seaborn,Python,Python 3.x,Matplotlib,Jupyter Notebook,Seaborn,我试图创建一个简单的散点图(我在过去创建了几个),因为我想了解服务台创建的票据和服务台关闭的票据之间的关系比率。这两个特征是时间戳,但当我绘制图表时,X轴和Y轴的范围似乎比所需的范围大得多,因为我从2017年到2019年的数据以及从2000年到2020年的图表。我已尝试将plt.xlim()修改为plt.xlim(20162020),但这会产生一个图,其中所述轴的值没有意义(见附图) 我的代码如下: plt.figure(figsize=(10,5)) ax = sns.scatterplot(
plt.xlim()
修改为plt.xlim(20162020)
,但这会产生一个图,其中所述轴的值没有意义(见附图)
我的代码如下:
plt.figure(figsize=(10,5))
ax = sns.scatterplot(data=data, x=data['Created'], y=data['Closed'])
这将生成以下图表:
当我试图修改plt.xlim()
时,我得到以下图表:
下面是我试图绘制的一些数据:
Created Closed
13 2018-01-16 16:23:21 2018-01-21 16:23:55
14 2018-01-11 17:51:18 2018-01-16 17:55:15
15 2018-01-12 13:03:50 2018-01-22 14:01:12
16 2018-01-11 13:28:55 2018-01-21 15:11:04
17 2018-01-04 09:58:36 2018-01-09 10:01:34
18 2018-01-23 09:19:36 2018-02-22 15:00:06
20 2019-04-09 10:50:54 2019-04-14 10:56:27
21 2019-04-08 19:22:49 2019-04-14 14:25:26
22 2019-04-09 12:34:24 2019-04-15 14:37:47
23 2019-04-09 17:22:10 2019-04-17 17:00:20
24 2019-04-09 09:58:52 2019-04-17 11:30:13
25 2019-04-08 20:08:01 2019-04-09 22:01:30
26 2019-04-09 18:40:13 2019-04-10 22:26:45
27 2019-04-09 19:29:04 2019-04-15 10:00:48
28 2019-04-10 02:43:15 2019-04-15 02:46:54
29 2019-04-10 03:04:36 2019-04-15 03:07:27
30 2019-04-10 03:12:02 2019-04-15 03:14:33
要重现我面临的问题,请在打印前运行以下命令:
data['Created']=pd.to_datetime(data['Created'])
data['Closed']=pd.to_datetime(data['Closed'])
我知道seaborn和绘图日期时间存在问题,但必须有一种正确绘制数据的方法。
因此,我的问题是,如何使绘图放大到创建数据的范围?这个问题是
sns.scatterplot
中的一个已知问题。
您可以用不同的方法解决问题,以下是两种:
使用简单的matplotlib打印并设置线型和标记:
sns.set()
fig,ax= plt.subplots(1,1,figsize=(10,5))
plt.plot(df['Created'], df['Closed'],linestyle='None', marker='o')
或者使用ax.plot\u date
sns.set()
fig,ax= plt.subplots(1,1,figsize=(10,5))
ax.plot_date(df['Created'], df['Closed'])
问题是当你这样做的时候
plt.xlim(2016, 2020)
plt
设置2016年和2020年的整数值的限制,该值转换为时间戳,将从历元时间开始大约2000纳秒,即
Timestamp('1970-01-01 00:00:00.000002020')
这就是为什么你再也看不到你的散乱。相反,将相应的时间戳传递给plt.xlim
:
plt.figure(figsize=(10,5))
ax = sns.scatterplot(data=data, x=data['Created'], y=data['Closed'])
plt.xlim(pd.to_datetime('2016-01-01'), # pd.to_datetime('2016') also works
pd.to_datetime('2020-01-01'))
plt.show()
你可以得到:
可能的重复正是我想要的!我知道有一种方法可以使用seaborn和dates。谢谢你在我的要求下多跑了一英里,让它工作起来。