如何使用Panda和seaborn在单线图上绘制两列



我想使用seaborn将列HighLow绘制到同一折线图中。

它们来自同一个csv文件。我设法在y轴上画出了High,但我很难把Low放进去。

供参考,这些文件来自Kaggle。

import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
sns.set_theme(style="darkgrid")
# Read Data from CSV:
micro = pd.read_csv('Microsoft Corporationstock.csv', parse_dates=['Date'])
covid = pd.read_csv('day_wise.csv', parse_dates=['Date'])
# Filter Data Needed:
start_date = covid['Date'].loc[0]
index_date = int(micro[micro['Date'] == start_date].index.values)
# Microsoft Stock Plot:
mg = sns.relplot(x='Date', y='High', kind='line', data=micro.loc[index_date:])
mg.set_xticklabels(rotation=30)
plt.ylabel('Market Value')
mg.fig.autofmt_xdate()
plt.show()

高库存图

通常情况下,seaborn地块在";熔化的";总体安排

在这里,您可以melt将数据转换为DateType(高或低(和Market Value。然后使用y='Market Value'hue='Type'在同一图中获得High和Low:

mg = sns.relplot(
data=micro.loc[index_date:].melt(id_vars='Date', var_name='Type', value_name='Market Value')),
x='Date',
y='Market Value',
hue='Type',
kind='line',
)

将其更改为此项有效吗?如果它类似于matplotlib,它可能会。

plot_y = ['High', 'Low']
for y in plot_y:
mg = sns.relplot(x='Date', y=y, kind='line', data=micro.loc[index_date:])
mg.fig.autofmt_xdate()
mg.set_xticklabels(rotation=30)
plt.ylabel('Market Value')
plt.show()

最新更新