这有点详细,但可以帮助您。 Seaborn的一个有点烦人的功能是regplot无法处理日期时间轴。当您要使用lowess参数时,尤其如此,该参数估计局部均值以给出曲线(与直线相反)来跟踪绘图中的变化。 (例如,R中提供了此功能。)
这对我来说是个问题,因为我有一个线性图,想要平滑但不使用滚动平均值。这是我的情节:
为解决此问题,我将数据框的索引作为x轴,并使用statsmodels计算出最低线,如下所示:
import matplotlib.pyplot as plt
import matplotlib.dates as mdates
import statsmodels.api as sm
rated = pd.read_csv('filepath.csv')
rated['linear'] = rated.index
x = rated['linear']
y = rated['trust_num']
lowess = sm.nonparametric.lowess(y, x, frac=.2)
low_y = [i[1] for i in lowess]
low_x = [i[0] for i in lowess]
rated['low_y'] = low_y
rated['low_x'] = low_x
rated['low_y'] = low_y
rated['low_x'] = low_x
h = sns.lineplot(x = 'linear', y = 'trust_num', data = rated)
h = sns.lineplot(x = 'linear', y = 'low_y', data = rated, color = 'r')
最后一步是将日期分配给x轴,具体操作如下:
labels = [i for i in rated['date']]
h.set_xticklabels(labels)
足够公平,这是一个常见的绘图问题。因此,我尝试旋转我的xtick标签:
plt.xticks(rotation=45)
但这没什么区别。谁能建议我如何使轴混乱?似乎很难到达那里并陷入一个看似简单的问题!