![](/img/trans.png)
[英]Matplotlib/Seaborn: how to plot a rugplot on the top edge of x-axis?
[英]How to properly space the x-axis in seaborn/matplotlib with a time axis?
我有一个以时间轴为索引的熊猫数据框。 绘制以下代码时
%matplotlib inline
import matplotlib.pyplot as plt
import numpy as np
import pandas as pd
import seaborn as sns; sns.set();
ids = [1,2,3,4]
dates = pd.date_range('20150704', '20160331')
vals = np.random.randn(len(ids)*len(dates))
allids = np.tile(ids, len(dates))
alldates = np.tile(dates, len(ids))
df = (pd.DataFrame(np.vstack((allids, vals)).T, index=alldates)
.reset_index().rename(columns={'index':'datetime',0:'unique_id',1:'height'}))
time_group = '1w'
threshold = 0.50
fig, axes = plt.subplots(nrows=4, ncols=1, figsize=(12, 16), sharex=True)
for (i, temp), ax in zip(df.groupby('unique_id'), axes.ravel()):
(temp.set_index('datetime').height
.groupby(pd.TimeGrouper(time_group))
.mean()
.plot(ax=ax))
我得到一个有4个地块的地块。 x轴上垂直线的间距如下所示:
请注意,例如11月比12月宽(因此,不仅仅是每个月的天数)。 显然,这是由于每个月的数据点数,而不是每个月的天数。 有什么建议可以使垂直线与月份的开始/结束时间正确地间隔开? 这是错误吗?
1W将根据每月的星期日进行分组,在某些月份中,我们的星期日比其他月份要多。这就是为什么有些月份更宽的原因。 进行以下更改应有帮助...
%matplotlib inline
import matplotlib.pyplot as plt
import numpy as np
import pandas as pd
import matplotlib.dates as mdates
import seaborn as sns; sns.set();
ids = [1,2,3,4]
dates = pd.date_range('20150704', '20160331')
vals = np.random.randn(len(ids)*len(dates))
allids = np.tile(ids, len(dates))
alldates = np.tile(dates, len(ids))
df = (pd.DataFrame(np.vstack((allids, vals)).T, index=alldates)
.reset_index().rename(columns={'index':'datetime',0:'unique_id',1:'height'}))
time_group = '1w'
threshold = 0.50
fig, axes = plt.subplots(nrows=4, ncols=1, figsize=(12, 16), sharex=True)
for (i, temp), ax in zip(df.groupby('unique_id'), axes.ravel()):
b=(temp.set_index('datetime').height
.groupby(pd.TimeGrouper(time_group))
.mean())
ax.plot(b.index,b)
ax.xaxis.set_major_formatter(mdates.DateFormatter('%b'))
plt.show()
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.