标签: seaborn

如何在Seaborn中叠加两个图表?

如何在Seaborn中叠加两个图表?我的数据中有两列我想将它们放在同一个图表中.我怎样才能保留两个图的标签.

python seaborn

24
推荐指数
2
解决办法
4万
查看次数

停止seaborn在彼此之上绘制多个数字

我开始学习一些python(一直使用R)进行数据分析.我正在尝试使用创建两个图seaborn,但它会在第一个图上保留第二个图.我该如何阻止这种行为?

import seaborn as sns
iris = sns.load_dataset('iris')

length_plot = sns.barplot(x='sepal_length', y='species', data=iris).get_figure()
length_plot.savefig('ex1.pdf')
width_plot = sns.barplot(x='sepal_width', y='species', data=iris).get_figure()
width_plot.savefig('ex2.pdf')
Run Code Online (Sandbox Code Playgroud)

python plot seaborn

24
推荐指数
3
解决办法
3万
查看次数

如何在 Seaborn 图中设置色调顺序

我有一个 Pandas 数据集,名为titanic我正在绘制条形图,如 Seaborn 官方文档中所述,使用以下代码:

import seaborn as sns

titanic = sns.load_dataset("titanic")
sns.catplot(x="sex", y="survived", hue="class", kind="bar", data=titanic)
Run Code Online (Sandbox Code Playgroud)

这会产生以下图:

按类别划分的条形图

如您所见,色调由 表示class。如何手动选择色调顺序以便反转当前色调顺序?

python bar-chart pandas hue seaborn

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

在seaborn中没有线性拟合的散点图

我想知道是否有办法关闭seaborn中的线性拟合,lmplot或者是否存在仅产生散点图的等效函数.当然,我也可以使用matplotlib,但是,我发现seaborn中的语法和美学非常吸引人.例如,.我想绘制下面的情节

import seaborn as sns
sns.set(style="ticks")

df = sns.load_dataset("anscombe")
sns.lmplot("x", "y", data=df, hue='dataset')
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

没有这样的线性拟合:

from itertools import cycle
import numpy as np

import matplotlib.pyplot as plt

color_gen = cycle(('blue', 'lightgreen', 'red', 'purple', 'gray', 'cyan'))

for lab in np.unique(df['dataset']):
    plt.scatter(df.loc[df['dataset'] == lab, 'x'], 
                df.loc[df['dataset'] == lab, 'y'], 
                c=next(color_gen),
                label=lab)

plt.legend(loc='best')
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

python matplotlib seaborn

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

如何设置seaborn boxplot的y轴范围?

官方的seaborn文档中,我了解到您可以创建如下框图:

import seaborn as sns
sns.set_style("whitegrid")
tips = sns.load_dataset("tips")
ax = sns.boxplot(x="day", y="total_bill", data=tips)
Run Code Online (Sandbox Code Playgroud)

Seaborn Boxplot示例

我的问题是:如何限制该图的y轴范围?例如,我希望y轴在[10,40]之内.有没有简单的方法来做到这一点?

python matplotlib boxplot seaborn

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

Seaborn多个barplots

我有一个像这样的pandas数据框:

    class       men       woman   children
0   first   0.91468    0.667971   0.660562
1   second  0.30012    0.329380   0.882608
2   third   0.11899    0.189747   0.121259
Run Code Online (Sandbox Code Playgroud)

如何使用看起来像这样的seaborn创建一个情节?我是否必须以某种方式重新安排我的数据?

python matplotlib pandas seaborn

23
推荐指数
2
解决办法
2万
查看次数

Seaborn 热图上仅显示第一行注释

正如通常建议的那样,我已设法将问题减少到最小的可重现示例:

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

matrix = np.array([[0.1234, 1.4567, 0.7890, 0.1234],
                   [0.9876, 0, 0.5432, 0.6789],
                   [0.1111, 0.2222, 0, 0.3333],
                   [0.4444, 0.5555, 0.6666, 0]])
sns.heatmap(matrix, annot=True)
plt.show()
Run Code Online (Sandbox Code Playgroud)

模糊地基于 Seaborn官方文档

不幸的是,与预期不同(所有数字都可见),我只看到顶行中的数字可见:

在此输入图像描述


由于这个问题实际上没有太大的空间,所以我没有想法,而且 google/SO 之前似乎没有问过这个问题。这是一个错误吗?


我在跑步:

Seaborn 0.12.2
Matplotlib 3.8.0
PyCharm 2023.1.4
Windows 10
Run Code Online (Sandbox Code Playgroud)

python matplotlib seaborn

23
推荐指数
2
解决办法
8960
查看次数

如何用Seaborn在同一个地块上绘制多个直方图

使用matplotlib,我可以在一个图上创建一个包含两个数据集的直方图(一个与另一个相邻,不是叠加).

import matplotlib.pyplot as plt
import random

x = [random.randrange(100) for i in range(100)]
y = [random.randrange(100) for i in range(100)]
plt.hist([x, y])
plt.show()
Run Code Online (Sandbox Code Playgroud)

这产生以下图.

在此输入图像描述

但是,当我尝试用seabron做这件事时;

import seaborn as sns
sns.distplot([x, y])
Run Code Online (Sandbox Code Playgroud)

我收到以下错误:

ValueError: color kwarg must have one color per dataset
Run Code Online (Sandbox Code Playgroud)

那么我尝试添加一些颜色值:

sns.distplot([x, y], color=['r', 'b'])
Run Code Online (Sandbox Code Playgroud)

我得到了同样的错误.我看到这篇关于如何叠加图形的文章,但我希望这些直方图是并排的,而不是叠加.

在查看文档时,它没有指定如何将列表列表作为第一个参数'a'.

如何使用seaborn实现这种直方图?

python matplotlib seaborn

22
推荐指数
2
解决办法
4万
查看次数

在seaborn boxplot中旋转xtick标签?

我有一个问题与2014年的问题基本相同(见这里).但是,我的脚本仍然会抛出错误.

这就是我所做的:我有一个带有几列的pandas数据帧.我绘制了一个简单的boxplot比较.

g = sns.boxplot(x='categories', y='oxygen', hue='target', data=df)
g.set_xticklabels(rotation=30)
Run Code Online (Sandbox Code Playgroud)

该图如下所示:

在此输入图像描述

我想将x标签旋转30度.因此我使用g.set_xticklabels(rotation=30).但是,我收到以下错误:

set_xticklabels() missing 1 required positional argument: 'labels'

我不知道如何将matplotlib labels论证传递给海关sns.boxplot.有任何想法吗?

matplotlib python-3.x pandas seaborn

22
推荐指数
2
解决办法
2万
查看次数

如何将网格线添加到seaborn中的catplot中?

如何将网格线(垂直和水平)添加到seaborn猫图?我发现可以在箱线图上做到这一点,但我有多个方面,因此需要一个猫图。与其他答案相反,catplot 不允许争论ax

这段代码是从这里借用的。

import seaborn as sns
sns.set(style="ticks")
exercise = sns.load_dataset("exercise")
g = sns.catplot(x="time", y="pulse", hue="kind", data=exercise)
plt.show()
Run Code Online (Sandbox Code Playgroud)

有任何想法吗?谢谢你!

编辑:提供的答案有效,但对于多面图,只有最后一个图继承网格。

import seaborn as sns
sns.set(style="ticks")
exercise = sns.load_dataset("exercise")
g = sns.catplot(x="time", y="pulse", hue="kind", col="diet", data=exercise)
plt.grid()
plt.show()
Run Code Online (Sandbox Code Playgroud)

有人可以向我解释为什么以及如何解决它吗?

python seaborn catplot

22
推荐指数
2
解决办法
7万
查看次数

标签 统计

seaborn ×10

python ×9

matplotlib ×6

pandas ×3

bar-chart ×1

boxplot ×1

catplot ×1

hue ×1

plot ×1

python-3.x ×1