[英]seaborn regplot formatted dates, regression line date cut off, two y-axis
我希望能够快速比较两个不同的数据集,并通过查看两条回归线来了解它们在特定日期的相关性。
我一直试图在不同的轴上绘制线图,每个轴都有一条往返于特定日期的回归线。 两个图的日期必须相同,我不希望回归线仅覆盖 X 轴上指定的所有日期。 所以 regplot 需要显示日期并理解它们是日期。
我在任何地方都找不到答案,所以我想我会在这里发布它,因为它需要一些时间来弄清楚。
#'date': pandas.to_datetime(date), # pandas datesimport datetime
from matplotlib import pyplot, dates
import seaborn as sns
import matplotlib.pyplot as plt
import pandas as pd
timeLine = ["2020-01-01", "2021-01-01", "2022-01-01", "2023-01-01", "2024-01-01"]
# format data
df = pd.DataFrame({
'Dates': pd.to_datetime(timeLine),
'datenum': dates.datestr2num(timeLine),
'y1': [7, 6, 8, 8, 7],
'y2': [10, 13, 16, 13, 12]
})
# dates to float
@pyplot.FuncFormatter
def fake_dates(x, pos):
return dates.num2date(x).strftime('%Y-%m-%d')
# date range to constrain length of regression line
startDate = '"2020-02-02"'
endDate = '"2023-05-05"'
customDates = 'Dates > ' + startDate + ' and ' + 'Dates < ' + endDate + ''
"""y1"""
plt.ylim(ymin=0, ymax=20)
# regplot
plot = sns.regplot(x='datenum', y='y1', ci=65, scatter=False, line_kws={'linewidth':10}, data=df.query(customDates), color="red")
# original data
sns.lineplot(x='datenum', y='y1', data=df)
"""y2"""
ax2 = plt.twinx()
plt.ylim(ymin=0, ymax=20)
# regplot
x = sns.regplot(x='datenum', y='y2', ax=ax2, ci=65, scatter=False, line_kws={'linewidth':10}, data=df.query(customDates), color="red")
# original data
y= sns.lineplot(x='datenum', y='y2', ax=ax2, data=df, color="green")
# fake dates - visual
plot.xaxis.set_major_formatter(fake_dates)
plt.show()
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.