标签: seaborn

如何创建基于 y 值的梯度阶梯图?

在 Python matplotlib 中,如何获得折线图或阶梯图中的线以显示基于 y 值的梯度?

示例图(在 Tableau 中制作):

在此输入图像描述

带有根据 x 值改变梯度的线的阶梯图代码,改编自此答案

fig, ax = plt.subplots(figsize=(10, 4))
x = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11]
y = [2, 3, 9, 10, 2, 9, 0, 1, 9, 1, -8]
T = np.linspace(0,1,np.size(x))**2
s = 1
for i in range(0, len(x)-s, s):
    ax.step(x[i:i+s+1], y[i:i+s+1],  marker='.', color=(0.0,0.5,T[i]))
ax.tick_params(axis='both', colors='lightgray', labelsize=8)
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

python linear-gradients seaborn

0
推荐指数
1
解决办法
809
查看次数

Plot Multiple Y axis + 'hue' scatterplot

Dataframe

df
Sample Type   y1   y2   y3  y4
S1     H     1000  135  220  171
S2     H     2900  1560 890  194
S3     P     678   350  127  255
S4     P     179   510  154  275
Run Code Online (Sandbox Code Playgroud)

I want to plot y1, y2, y3, y4 vs Sample scatterplot with hue as Type.

Is there any way to do it in Seaborn?

python scatter-plot pandas seaborn relplot

0
推荐指数
1
解决办法
3703
查看次数

如何在seaborn.lmplot中为整个数据添加回归线?

我正在尝试绘制散点图,其中每个点都根据变量进行着色Points。此外,我想添加回归线。

import pandas as pd
import urllib3
import seaborn as sns

decathlon = pd.read_csv("https://raw.githubusercontent.com/leanhdung1994/Deep-Learning/main/decathlon.txt", sep='\t')

g = sns.lmplot(
    data = decathlon,
    x="100m", y="Long.jump",
    hue = 'Points', palette = 'viridis'
)
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

在我看来,有两条回归线,每组数据各一条。这不是我想要的。我想要整个数据的回归线。此外,如何隐藏右侧的图例?

您能否详细说明一下如何操作?

matplotlib python-3.x seaborn

0
推荐指数
1
解决办法
3819
查看次数

根据带有 lineplot 的 seaborn FacetGrid 的列设置线宽

我想在 FacetGrid 中的每个线图中挑选出某一行,以突出显示与其他选项相比的“默认”设置。

我尝试根据seaborn文档中的随机游走示例制作一个最小的示例


import numpy as np
import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt

rs = np.random.RandomState(2020)
pos = rs.randint(-1, 2, (20, 5)).cumsum(axis=1)
pos -= pos[:, 0, np.newaxis]
step = np.tile(range(5), 20)
walk = np.repeat(range(20), 5)
df = pd.DataFrame(np.c_[pos.flat, step, walk],
                  columns=["position", "step", "walk"])
df["family"] = df["walk"] % 5
df["top"] = df.groupby("walk")["position"].transform("max")
df["importance"] = df["top"]+1
grid = sns.FacetGrid(df, col="family", col_wrap=3,  hue="walk")
grid.map_dataframe(sns.lineplot, "step", "position", marker="o")
grid.add_legend()
Run Code Online (Sandbox Code Playgroud)

这给了我多面线图,所有线的宽度相同(当然):

第一次尝试

我创建了一个额外的列,名为importance; 我想根据此列设置线宽。我可以看到,通过一个简单的操作,seaborn.lineplot您可以“分配 …

python pandas seaborn

0
推荐指数
1
解决办法
1952
查看次数

从 Matplotlib 中的颜色栏中删除标签和刻度线

我有一个热图,我想删除颜色条上的标签和刻度线。如何使用迄今为止制作的热图(下面的代码)来做到这一点?

import seaborn as sns
import matplotlib.pyplot as plt

sns.heatmap(my_heatmap, cmap='RdYlGn', vmin=0, vmax=1)
plt.rcParams["figure.figsize"] = (8, 6)
plt.title('10 mm Precipitation Probabilities\nTopeka, Kansas', fontsize = 16)
plt.xlabel('X', fontsize = 14)
plt.ylabel('Y', fontsize = 14)
plt.text(6.7,.18, 'High Probability')
plt.show()
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

(我宁愿它只是在栏顶部显示高概率,如我制作的标签所示)。

python matplotlib heatmap python-3.x seaborn

0
推荐指数
1
解决办法
3744
查看次数

将子图与 pyplot 条形图和 seaborn 热图对齐

我试图将 Seaborn 基于时间的热图放置在条形图的顶部,指示每个箱/时间范围内的患者数量。我可以成功制作单独的热图和条形图,但将两者结合起来却无法按预期工作。

import pandas as pd
import numpy as np
import seaborn as sb
from matplotlib import pyplot as plt

# Mock data
patient_counts = [650, 28, 8]
missings_df = pd.DataFrame(np.array([[-15.8, 600/650, 580/650, 590/650],
                                     [488.2, 20/23, 21/23, 21/23],
                                     [992.2, 7/8, 8/8, 8/8]]),
                           columns=['time', 'Resp. (/min)', 'SpO2', 'Blood Pressure'])
missings_df.set_index('time', inplace=True)

# Plot heatmap
fig, (ax1, ax2) = plt.subplots(nrows=2, figsize=(26, 16), sharex=True, gridspec_kw={'height_ratios': [5, 1]})
sb.heatmap(missings_df.T, cmap="Blues", cbar_kws={"shrink": .8}, ax=ax1, xticklabels=False)
plt.xlabel('Time (hours)')

# Plot line graph under heatmap to …
Run Code Online (Sandbox Code Playgroud)

python matplotlib subplot seaborn

0
推荐指数
1
解决办法
1962
查看次数

使用seaborn的辅助y轴

我正在尝试将条形图和折线图绘制为单个图,并且seaborn由于其良好的格式功能而倾向于使用。但是,当我df1.plot(kind='bar',...)执行后df1.plot(kind='line',..., secondary_y=True),我得到如下类似的结果,即没有折线图,但没有错误。

import seaborn as sns
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
# Sample dataframe.
df1 = pd.DataFrame({'date':pd.date_range(datetime(2020,1,1), periods=699).tolist(), 'amount':range(1,700), 'balance':np.cumsum(range(1,700))})
df1.loc[:, 'month'] = df1['date'].dt.to_period("M")
df1.loc[:, 'month_str'] = df1['date'].dt.year.astype(str) + '-' + df1['date'].dt.month.astype(str)
df1.loc[:, 'month_dt'] = pd.to_datetime(df1.month.dt.year*10000+df1.month.dt.month*100+1,format='%Y%m%d')

# Case-1: This doesn't work.
df2 = df1.groupby(['month']).agg({'amount':'sum','balance':'sum'})
sns.barplot(x='month', y='amount', data=df2.reset_index(), palette="Blues_d")
ax2 = plt.twinx()
sns.lineplot(x='month', y='balance', data=df2.reset_index(), color='red', markers=True, ax=ax2)

# Case-2: This doesn't work (as intended, if months grow …
Run Code Online (Sandbox Code Playgroud)

matplotlib python-3.x seaborn

0
推荐指数
1
解决办法
3478
查看次数

能否使用 Python 将箱线图与雨云图上的半小提琴图重叠?

我使用以下代码创建了雨云图:

#雨图

dx = 'Time Point'; dy = 'Score'; ort = "v"; pal = "Set2"; sigma = .2; 

f, ax = plt.subplots(figsize=(7, 5))

pt.RainCloud(x = dx, y = dy, data = df, palette = pal, bw = sigma,
             width_viol = .9, ax= ax, orient = ort, move = .2)

plt.title("")
plt.ylabel('Score', fontsize = 20) 
plt.xlabel('', fontsize = 20) 
plt.grid(color = 'w')

if savefigs: 
    plt.savefig('/Users/zeidanlab/Desktop/gv/rainplots/figure_tsc.png', bbox_inches='tight')
Run Code Online (Sandbox Code Playgroud)

雨云图

我想知道是否有办法使箱线图与分布斑点重叠。

python matplotlib boxplot seaborn violin-plot

0
推荐指数
1
解决办法
3548
查看次数

如何在绘图中整齐地或以一定间隔的形式显示X轴日期刻度

我正在使用plotly 制作 OHLC 图。我偶然发现了一个问题。x 轴上的标签看起来非常混乱。有没有办法让它更整洁。或者我们可以只显示极端日期值吗?例如,仅显示第一个日期值和最后一个日期值。日期范围本质上是动态的。我正在使用下面的查询来制作图表。谢谢您的帮助。

fig = go.Figure(data=go.Candlestick(x=tickerDf.index.date,
                    open=tickerDf.Open,
                    high=tickerDf.High,
                    low=tickerDf.Low,
                    close=tickerDf.Close) )

    fig.update_xaxes(showticklabels=True )    #Disable xticks 
    fig.update_layout(width=800,height=600,xaxis=dict(type = "category") ) # hide dates with no values
    
    st.plotly_chart(fig)
Run Code Online (Sandbox Code Playgroud)

这里的tickerDf是包含股票相关数据的数据框。

在此输入图像描述

python charts plotly seaborn ohlc

0
推荐指数
1
解决办法
4368
查看次数

seaborn:无法将字符串转换为浮点数

我有 DataFrame df

Timestamp-start    datetime64[ns]
Timestamp-end      datetime64[ns]
M                          object
S                          object
Type                       object
description_x              object
description_y              object
Date               datetime64[ns]
number_col                 float64
dtype: object
Run Code Online (Sandbox Code Playgroud)

number_col :

51      0.0
0       1.0
1       2.0
2       3.0
52      5.0
      ...  
47    148.0
48    148.0
43    148.0
49    149.0
50    149.0
Name: number_col, Length: 132, dtype: float64
Run Code Online (Sandbox Code Playgroud)

我想使用seaborn和列number_col绘制直方图

>     import seaborn as sns
>     
>     sns.distplot(df, x='number_col')
Run Code Online (Sandbox Code Playgroud)

但我收到以下错误:

ValueError: could not convert string to float: 'number_col'
Run Code Online (Sandbox Code Playgroud)

我不知道为什么会发生这种情况,“number_col”已经是一个浮点列。

python pandas seaborn

0
推荐指数
1
解决办法
1万
查看次数