簡體   English   中英

seaborn regplot 格式化日期,回歸線日期截斷,兩個y軸

[英]seaborn regplot formatted dates, regression line date cut off, two y-axis

我希望能夠快速比較兩個不同的數據集,並通過查看兩條回歸線來了解它們在特定日期的相關性。

我一直試圖在不同的軸上繪制線圖,每個軸都有一條往返於特定日期的回歸線。 兩個圖的日期必須相同,我不希望回歸線僅覆蓋 X 軸上指定的所有日期。 所以 regplot 需要顯示日期並理解它們是日期。

  1. 格式化日期,以便它們可以與 regplot 一起使用,因為這不是本機功能。
  2. 兩個 y 軸
  3. 數據顯示為線圖而不是散點圖
  4. 特定日期與並非所有數據之間的回歸線

我在任何地方都找不到答案,所以我想我會在這里發布它,因為它需要一些時間來弄清楚。

#'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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM