我正在上传一个电子表格从excel到一个数据。在这张表中,我只对两栏感兴趣。第一列是%Y-%m-%d %H-%M-%S格式的日期和时间.第二列是一个分类变量,即违规类型(例如,迟到)。总共很少有违反规定的类型。大约6-7种。使用命令df.info (),可以确保可用列的数据格式具有日期和时间列的datatime64ns类型,对于有冲突类型的列具有分类类型。我想使用带有来自海运库(marginals.html )的边缘分布的十六本图。但是,对于具有类别和时间的变量,上述链接中可用的简单代码并不那么简单。
import seaborn as sns
sns.set_theme(style="ticks")
sns.jointplot(x=df['incident'], y=['date-time'], kind="hex", color="#4CB391")编译器报告TypeError: x变量是绝对变量,但需要“数值”、“日期时间”之一。
我知道纵坐标需要一个数值变量或一个日期时间变量。转换不能解决问题。
此错误可以使用
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()有个问题。如何获得类似于海鸟式的情节
发布于 2021-11-20 13:19:48
根据问题中引用的示例作为所需的图形样式,将x轴上的数据更改为日期/时间数据,将其转换为matplotlib可以处理的日期格式,并将其作为x轴上的勾号。滴答是通过将时间序列转换回原来的格式来放置的。由于日期和时间重叠,文本的角度会发生变化。另外,请你自己来判断@JohanC指出的要点。
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)

https://stackoverflow.com/questions/70045464
复制相似问题