Python Seaborn 图表 - 阴影区域
Python Seaborn Chart - Shadow Area
抱歉我的菜鸟问题,但是如何在 seaborn 图表的上下线之间添加阴影 area/color?
我正在处理的主要代码如下:
plt.figure(figsize=(18,10))
sns.set(style="darkgrid")
palette = sns.color_palette("mako_r", 3)
sns.lineplot(x="Date", y="Value", hue='Std_Type', style='Value_Type', sizes=(.25, 2.5), palette = palette, data=tbl4)
这个想法是为了获得如下效果(来自 seaborn 网站的示例):
但是我无法复制效果,尽管我的数据结构与 fmri(seaborn 示例)
的方式几乎相同
来自 seaborn link:
import seaborn as sns
sns.set(style="darkgrid")
# Load an example dataset with long-form data
fmri = sns.load_dataset("fmri")
# Plot the responses for different events and regions
sns.lineplot(x="timepoint", y="signal",
hue="region", style="event",
data=fmri)
你有什么想法吗?
我尝试更改图表样式,但是如果我转到 distplot
或 relplot
,例如,x_axis
无法显示时间范围...
检查此代码:
# import
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns
import pandas as pd
sns.set(style = 'darkgrid')
# data generation
time = pd.date_range(start = '2006-01-01', end = '2020-01-01', freq = 'M')
tbl4 = pd.DataFrame({'Date': time,
'down': 1 - 0.5*np.random.randn(len(time)),
'up': 4 + 0.5*np.random.randn(len(time))})
tbl4 = tbl4.melt(id_vars = 'Date',
value_vars = ['down', 'up'],
var_name = 'Std_Type',
value_name = 'Value')
# figure plot
fig, ax = plt.subplots(figsize=(18,10))
sns.lineplot(ax = ax,
x = 'Date',
y = 'Value',
hue = 'Std_Type',
data = tbl4)
# fill area
plt.fill_between(x = tbl4[tbl4['Std_Type'] == 'down']['Date'],
y1 = tbl4[tbl4['Std_Type'] == 'down']['Value'],
y2 = tbl4[tbl4['Std_Type'] == 'up']['Value'],
alpha = 0.3,
facecolor = 'green')
plt.show()
这给了我这个情节:
由于我无法访问您的数据,因此我生成了随机数据。用你的替换它们。
阴影区域用plt.fill_between
完成(文档here),这里指定x
数组(两条曲线通用),面积上下限为y1
和 y2
以及可选的颜色及其透明度,分别带有 facecolor
和 alpha
参数。
您不能通过 ci
参数来实现,因为它用于显示数据的 。
抱歉我的菜鸟问题,但是如何在 seaborn 图表的上下线之间添加阴影 area/color?
我正在处理的主要代码如下:
plt.figure(figsize=(18,10))
sns.set(style="darkgrid")
palette = sns.color_palette("mako_r", 3)
sns.lineplot(x="Date", y="Value", hue='Std_Type', style='Value_Type', sizes=(.25, 2.5), palette = palette, data=tbl4)
这个想法是为了获得如下效果(来自 seaborn 网站的示例): 但是我无法复制效果,尽管我的数据结构与 fmri(seaborn 示例)
的方式几乎相同来自 seaborn link:
import seaborn as sns
sns.set(style="darkgrid")
# Load an example dataset with long-form data
fmri = sns.load_dataset("fmri")
# Plot the responses for different events and regions
sns.lineplot(x="timepoint", y="signal",
hue="region", style="event",
data=fmri)
你有什么想法吗?
我尝试更改图表样式,但是如果我转到 distplot
或 relplot
,例如,x_axis
无法显示时间范围...
检查此代码:
# import
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns
import pandas as pd
sns.set(style = 'darkgrid')
# data generation
time = pd.date_range(start = '2006-01-01', end = '2020-01-01', freq = 'M')
tbl4 = pd.DataFrame({'Date': time,
'down': 1 - 0.5*np.random.randn(len(time)),
'up': 4 + 0.5*np.random.randn(len(time))})
tbl4 = tbl4.melt(id_vars = 'Date',
value_vars = ['down', 'up'],
var_name = 'Std_Type',
value_name = 'Value')
# figure plot
fig, ax = plt.subplots(figsize=(18,10))
sns.lineplot(ax = ax,
x = 'Date',
y = 'Value',
hue = 'Std_Type',
data = tbl4)
# fill area
plt.fill_between(x = tbl4[tbl4['Std_Type'] == 'down']['Date'],
y1 = tbl4[tbl4['Std_Type'] == 'down']['Value'],
y2 = tbl4[tbl4['Std_Type'] == 'up']['Value'],
alpha = 0.3,
facecolor = 'green')
plt.show()
这给了我这个情节:
由于我无法访问您的数据,因此我生成了随机数据。用你的替换它们。
阴影区域用plt.fill_between
完成(文档here),这里指定x
数组(两条曲线通用),面积上下限为y1
和 y2
以及可选的颜色及其透明度,分别带有 facecolor
和 alpha
参数。
您不能通过 ci
参数来实现,因为它用于显示数据的