首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >datetime64[ns]和范畴变量的边缘分布的海潮六宾图

datetime64[ns]和范畴变量的边缘分布的海潮六宾图
EN

Stack Overflow用户
提问于 2021-11-20 11:25:21
回答 1查看 530关注 0票数 0

我正在上传一个电子表格从excel到一个数据。在这张表中,我只对两栏感兴趣。第一列是%Y-%m-%d %H-%M-%S格式的日期和时间.第二列是一个分类变量,即违规类型(例如,迟到)。总共很少有违反规定的类型。大约6-7种。使用命令df.info (),可以确保可用列的数据格式具有日期和时间列的datatime64ns类型,对于有冲突类型的列具有分类类型。我想使用带有来自海运库(marginals.html )的边缘分布的十六本图。但是,对于具有类别和时间的变量,上述链接中可用的简单代码并不那么简单。

代码语言:javascript
复制
import seaborn as sns
sns.set_theme(style="ticks")

sns.jointplot(x=df['incident'], y=['date-time'], kind="hex", color="#4CB391")

编译器报告TypeError: x变量是绝对变量,但需要“数值”、“日期时间”之一。

我知道纵坐标需要一个数值变量或一个日期时间变量。转换不能解决问题。

此错误可以使用

代码语言:javascript
复制
import seaborn as sns
import matplotlib.pyplot as plt
import pandas as pd

from datetime import datetime


ndf = pd.DataFrame({'date-time': ['2021-11-15 00:10:00','2021-11-15 00:20:00'], 'incident': ['a','b']})
print(ndf)

sns.set_theme(style="ticks")

sns.jointplot(data=ndf, x='incident', y='date-time', color="#4CB391", hue=ndf['incident'] )

plt.show()

有个问题。如何获得类似于海鸟式的情节

EN

回答 1

Stack Overflow用户

发布于 2021-11-20 13:19:48

根据问题中引用的示例作为所需的图形样式,将x轴上的数据更改为日期/时间数据,将其转换为matplotlib可以处理的日期格式,并将其作为x轴上的勾号。滴答是通过将时间序列转换回原来的格式来放置的。由于日期和时间重叠,文本的角度会发生变化。另外,请你自己来判断@JohanC指出的要点。

代码语言:javascript
复制
import numpy as np
import seaborn as sns
sns.set_theme(style="ticks")
import matplotlib.pyplot as plt
import matplotlib.dates as mdates
import pandas as pd

rs = np.random.RandomState(11)
x = rs.gamma(2, size=1000)
date_rnge = pd.date_range('2021-11-15', '2021-11-16', freq='1min')
y = -.5 * x + rs.normal(size=1000)

g = sns.jointplot(x=mdates.date2num(date_rng[:1000]), y=y, kind="hex", color="#4CB391")
g.ax_joint.set_xticklabels([mdates.num2date(d).strftime('%Y-%m-%d %H:%M:%S') for d in mdates.date2num(date_rng[:1000])])

for tick in g.ax_joint.get_xticklabels():
    tick.set_rotation(45)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70045464

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档