繁体   English   中英

Lineplot seaborn 没有绘制正确的多线图

[英]Lineplot seaborn did not plot the right multi-line plot

我正在尝试制作一个多线图,其中一条线显示 2019 年 1 月到 7 月的每日计数信息,另一条线显示 2020 年的情况。在绘制图表之前,我还使用pd.concat来“垂直”组合 2019 年数据pd.concat和 2020 数据框,使组合后的数据框适合作为 seaborn 的 lineplot 函数的输入数据集。 然而,结果有点混乱:

在此处输入图片说明

plt.figure(figsize=(18,6))

ax5 = sns.lineplot(x='OBSERVATION_DATE_ONLY', y='OBSERVATION_COUNT', hue='OBSERVATION_YEAR', data=Bird_Concat1920['rinphe'])

#Reset x and y axis labels
ax5.set_xlabel('Observation Date')
ax5.set_ylabel('Observation Count')
ax5.xaxis.labelpad = 15
ax5.yaxis.labelpad = 15

这是连接数据帧的外观快照:

在此处输入图片说明

有两点:一是2020年是闰年,所以我们去掉2月29日,二是x轴上的数据设置为相同的数字,未到的设置为NA。

import pandas as pd
import numpy as np

date_2019 = pd.date_range('2019-01-01', '2019-12-31', freq='1D')
date_2020 = pd.date_range('2020-01-01', '2020-12-31', freq='1D')
val_2019 = np.random.randint(100, 300, (365,))
val_2020 = np.random.randint(100, 300, (241,))
val_2020 = np.insert(val_2020.astype(float),len(val_2020),[np.NaN]*125)
df_2019 = pd.DataFrame({'Date':date_2019, 'OBSERVATION_COUNT': val_2019})
df_2020 = pd.DataFrame({'Date':date_2020, 'OBSERVATION_COUNT': val_2020})
df_2020 = df_2020[df_2020['Date'] != '2020-02-29']
Bird_Concat1920 = pd.concat([df_2019, df_2020], axis=0)
Bird_Concat1920['Date'] = pd.to_datetime(Bird_Concat1920['Date'])
Bird_Concat1920['OBSERVATION_YEAR'] = Bird_Concat1920['Date'].apply(lambda x:'Year_'+ str(x.year))
Bird_Concat1920['OBSERVATION_DATE_ONLY'] = Bird_Concat1920['Date'].apply(lambda x: x.strftime('%m-%d'))

import seaborn as sns
import matplotlib.pyplot as plt
import matplotlib.dates as mdates

fig = plt.figure(figsize=(18,6))

ax5 = sns.lineplot(x='OBSERVATION_DATE_ONLY', y='OBSERVATION_COUNT', hue='OBSERVATION_YEAR', data=Bird_Concat1920)

#Reset x and y axis labels
ax5.set_xlabel('Observation Date')
ax5.set_ylabel('Observation Count')
ax5.xaxis.labelpad = 15
ax5.yaxis.labelpad = 15

months = mdates.MonthLocator(interval=1)
months_fmt = mdates.DateFormatter('%b')
ax5.xaxis.set_major_locator(months)
ax5.xaxis.set_major_formatter(months_fmt)

在此处输入图片说明

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM