相关疑难解决方法(0)

如何更改seaborn图的图形大小?

如何更改图像的大小以使其适合打印?

例如,我想使用A4纸,其横向尺寸为11.7英寸×8.27英寸.

python seaborn

171
推荐指数
13
解决办法
26万
查看次数

在seaborn factorplot中旋转标签文本

我有一个简单的factorplot

import seaborn as sns
g = sns.factorplot("name", "miss_ratio", "policy", dodge=.2, 
    linestyles=["none", "none", "none", "none"], data=df[df["level"] == 2])
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

问题是x标签全部一起运行,使它们不可读.如何旋转文本以使标签可读?

matplotlib seaborn

121
推荐指数
7
解决办法
12万
查看次数

将seaborn情节传奇移到另一个位置?

我正在使用factorplot(kind="bar")seaborn.

情节很好,除了传说是错位的:右边太多,文字从情节的阴影区域出来.

如何让seaborn将传奇置于其他地方,例如左上角而不是右中角?

python seaborn

38
推荐指数
5
解决办法
7万
查看次数

如何在Subplot中绘制多个Seaborn Jointplot

我在将Seaborn Jointplot放在多列中时遇到了问题subplot.

import pandas as pd
import seaborn as sns

df = pd.DataFrame({'C1': {'a': 1,'b': 15,'c': 9,'d': 7,'e': 2,'f': 2,'g': 6,'h': 5,'k': 5,'l': 8},
          'C2': {'a': 6,'b': 18,'c': 13,'d': 8,'e': 6,'f': 6,'g': 8,'h': 9,'k': 13,'l': 15}})

fig = plt.figure();   
ax1 = fig.add_subplot(121);  
ax2 = fig.add_subplot(122);

sns.jointplot("C1", "C2", data=df, kind='reg', ax=ax1)
sns.jointplot("C1", "C2", data=df, kind='kde', ax=ax2)
Run Code Online (Sandbox Code Playgroud)

注意如何只将一部分jointplot放置在子图内,其余部分留在另外两个图框内.我想要的是distributions同时插入内部subplots.

有人能帮忙吗?

python matplotlib python-3.x pandas seaborn

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

使用Seaborn在一个图中绘制多个不同的图

我试图从使用seaborn的统计学习简介一书中重新创建以下情节 在此输入图像描述

我特别想用seaborn lmplot来创建前两个图并boxplot创建第二个图.主要问题是lmplot facetgrid根据这个答案创建了一个强制我为盒子图添加另一个matplotlib轴.我想知道是否有更简单的方法来实现这一目标.下面,我必须进行相当多的手动操作才能获得所需的情节.

seaborn_grid = sns.lmplot('value', 'wage', col='variable', hue='education', data=df_melt, sharex=False)
seaborn_grid.fig.set_figwidth(8)

left, bottom, width, height = seaborn_grid.fig.axes[0]._position.bounds
left2, bottom2, width2, height2 = seaborn_grid.fig.axes[1]._position.bounds
left_diff = left2 - left
seaborn_grid.fig.add_axes((left2 + left_diff, bottom, width, height))

sns.boxplot('education', 'wage', data=df_wage, ax = seaborn_grid.fig.axes[2])
ax2 = seaborn_grid.fig.axes[2]
ax2.set_yticklabels([])
ax2.set_xticklabels(ax2.get_xmajorticklabels(), rotation=30)
ax2.set_ylabel('')
ax2.set_xlabel('');

leg = seaborn_grid.fig.legends[0]
leg.set_bbox_to_anchor([0, .1, 1.5,1])
Run Code Online (Sandbox Code Playgroud)

哪个收益率在此输入图像描述

DataFrames的示例数据:

df_melt = {'education': {0: '1. < HS Grad',
  1: '4. College Grad',
  2: '3. Some College', …
Run Code Online (Sandbox Code Playgroud)

python matplotlib seaborn

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

seaborn在次要情节中产生单独的数字

我正试图在seaborn中使用以下方法制作2x1子情节图:

data = pandas.DataFrame({"x": [1, 2, 4],
                        "y": [10,20,40],
                        "s": [0.01,0.1,1.0]})

plt.figure()
plt.subplot(2, 1, 1)
sns.pointplot(x="x", y="y", data=data)
plt.errorbar(np.arange(len(data["x"])), data["y"], yerr=data["s"])
plt.subplot(2, 1, 2)
sns.factorplot(x="x", y="y", data=data)
plt.show()
Run Code Online (Sandbox Code Playgroud)

它产生两个独立的数字,而不是一个带有两个子图的单个数字.为什么它会这样做?如何为多个单独的子图调用seaborn?

我试着查看下面引用的帖子,但我看不到即使factorplot首先调用也可以添加子图.有人能举例说明吗?这会有所帮助.我的尝试:

data = pandas.DataFrame({"x": [1, 2, 4],
                        "y": [10,20,40],
                        "s": [0.01,0.1,1.0]})

fig = plt.figure()
sns.pointplot(x="x", y="y", data=data)
ax = sns.factorplot(x="x", y="y", data=data)
fig.add_subplot(212, axes=ax)
plt.errorbar(np.arange(len(data["x"])), data["y"], yerr=data["s"])
plt.show()
Run Code Online (Sandbox Code Playgroud)

python matplotlib seaborn

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

在seaborn的同一个地块上的多个图表

我正在尝试为某些数据绘制一个条形样式"factorplot",然后绘制一个常规的点样式"factorplot",以便在其上方拟合该数据.所以对于数据图我可以简单地做:

sns.factorplot(x='x',y='yData',data=dataFrame,kind='bar')
Run Code Online (Sandbox Code Playgroud)

对于模型图我可以简单地做:

sns.factorplot(x='x',y='yModel',data=dataFrame,kind='point')
Run Code Online (Sandbox Code Playgroud)

问题是,如果我这样做:

sns.plt.show()
Run Code Online (Sandbox Code Playgroud)

我得到2个单独的数字而不是一个.有没有简单的方法告诉seaborn只是在同一个图表上绘制它们?

python seaborn

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

重绘动画的Seaborn数字

一些seaborn方法,比如JointPlot 在每次调用时创建新数据.这使得无法创建一个简单的动画,例如matplotlib迭代调用plt.cla()plt.clf()允许更新图形内容而不必每次都关闭/打开窗口.

我目前看到的唯一解决方案是:

for t in range(iterations):
    # .. update your data ..

    if 'jp' in locals():
        plt.close(jp.fig)

    jp = sns.jointplot(x=data[0], y=data[1])
    plt.pause(0.01)
Run Code Online (Sandbox Code Playgroud)

这是有效的,因为我们在创建新窗口之前关闭了上一个窗口.但当然,这远非理想.

有没有更好的办法?可以某种方式直接在先前生成的Figure对象上完成绘图吗?或者有没有办法阻止这些方法在每次调用时生成新数据?

python matplotlib seaborn

6
推荐指数
2
解决办法
3404
查看次数

在seaborn.PairGrid上将多个数据集绘制为具有不同颜色的kdeplots

我正在尝试绘制与seaborn文档中描述的情况非常相似的情况: http://seaborn.pydata.org/tutorial/axis_grids.html#plotting-pairwise-relationships-with-pairgrid-and-pairplot

可以在下面的几张图表中找到所讨论的示例,其中sns.PairGrid使用 iris 数据集绘制了 。他们将不同的物种绘制在样本对网格上,并将物种颜色编码为色调。

我基本上想做到这一点,但是使用 kde 等高线图。我得到的数据格式与它们相同:

new_HP.head()
          A         C     logsw Mass Range
0 -3.365547  0.977325  6.172032          0
1 -0.836703  0.962374  5.949639          0
2 -0.522476  0.931787  5.967940          0
3 -0.508345  0.974561  5.929046          0
4 -0.753747  0.905854  6.027479          0
Run Code Online (Sandbox Code Playgroud)

“质量范围”取值 0、1、2、3。和

g = sns.PairGrid(new_HP, vars=['A', 'C', 'logsw'], hue="Mass Range")
g.map_diag(sns.kdeplot)
g.map_lower(sns.kdeplot)
g.map_upper(plt.scatter)
Run Code Online (Sandbox Code Playgroud)

我得到以下情节kde轮廓都是一样的颜色而且丑陋。 我想为每个“质量范围”箱设置 kde 计数的颜色,就像右上角的散点颜色显示为色调一样。我怎样才能做到这一点?

python matplotlib seaborn

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

matplotlib中不需要的空白子图

情节

我是matplotlib和seaborn的新手,目前正在尝试使用经典的titanic数据集练习这两个库。这可能是基本的,但是我试图通过输入参数ax = matplotlib axis来并排绘制两个因子图,如以下代码所示:

import matploblib.pyplot as plt
import seaborn as sns
%matplotlib inline 

fig, (axis1,axis2) = plt.subplots(1,2,figsize=(15,4))
sns.factorplot(x='Pclass',data=titanic_df,kind='count',hue='Survived',ax=axis1)
sns.factorplot(x='SibSp',data=titanic_df,kind='count',hue='Survived',ax=axis2)
Run Code Online (Sandbox Code Playgroud)

我原本期望两个因子图同时出现,但不仅如此,我还获得了两个额外的空白子图,如上所示

编辑:图像不存在

python matplotlib seaborn

4
推荐指数
1
解决办法
1878
查看次数

如何使用 sharex=True 在 catplot (kind='violin') 顶部绘制 seaborn catplot (kind='count')

到目前为止我已经尝试过以下代码:

# Import to handle plotting
import seaborn as sns

# Import pyplot, figures inline, set style, plot pairplot
import matplotlib.pyplot as plt

# Make the figure space
fig = plt.figure(figsize=(2,4))
gs = fig.add_gridspec(2, 4)
ax1 = fig.add_subplot(gs[0, :])
ax2 = fig.add_subplot(gs[1, :])

# Load the example car crash dataset
tips = sns.load_dataset("tips")

# Plot the frequency counts grouped by time
sns.catplot(x='sex', hue='smoker',
                                   kind='count',
                                   col='time',
                                   data=tips,
                                   ax=ax1)

# View the data
sns.catplot(x='sex', y='total_bill', hue='smoker',
                                                   kind='violin',
                                                   col='time',
                                                   split='True', 
                                                   cut=0, 
                                                   bw=0.25, 
                                                   scale='area', …
Run Code Online (Sandbox Code Playgroud)

python categorical-data seaborn

4
推荐指数
1
解决办法
6391
查看次数

使用 seaborn FacetGrid 映射两个子图

我正在尝试并排生成两个 seaborn 核密度图 ( kdeplot)。

这里使用了三个特征(社区学校?、经济需求指数、学校收入估计)。唯一的分类特征“社区学校?” 显示为代表其级别的绿蓝色。“经济需求指数”和“学校收入估计”分别针对两个 kdeplots。

使用下面显示的代码创建的图像是我能得到的最好结果,但它有问题。

1)第二个图的 y 轴刻度是错误的(它应该是一些整数刻度,就像第一个图一样)校正:kdeplot被归一化(所有东西总和为 1),因此 y 轴在给定其 x 值的情况下是正确的。

2)沿着两个图下方产生一个额外的轴(?)

3)我想为每个子图添加一个标题

我发现kdeplot不支持hue所以我试图让它与FacetGrid. 不确定这是否是正确的方法。如果提供更好的方法将不胜感激。

fig, (ax1, ax2) = plt.subplots(1, 2)
fig.subplots_adjust(wspace=.8)

fg = sns.FacetGrid(df, hue='Community School?', size=3)
fg.map(sns.kdeplot, 'Economic Need Index', shade=True, ax=ax1, label='Economic Need Index')
fg.map(sns.kdeplot, 'School Income Estimate', shade=True, ax=ax2, label='School Income Estimate')
plt.show()
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明

# my dataset looks like:

Community School? / Economic Need Index / School Income Estimate
0 …
Run Code Online (Sandbox Code Playgroud)

python seaborn

2
推荐指数
1
解决办法
7282
查看次数

inner()为参数'ax'获得了多个值

在使用Python的Jupyter笔记本中,我正在从数据帧的两列中绘制一个六边形联合图。该图已正确绘制,但我无法调整图片大小。

这是代码:

fig, ax = plt.subplots()
fig.set_size_inches(11.7, 8.27)
sns.jointplot(x=train['max1'], y=train['intangle'], kind="hex", color="#4CB391",ax=ax)
plt.show()
Run Code Online (Sandbox Code Playgroud)

肠道我得到inner()得到了多个参数'ax'的值

python matplotlib python-3.x seaborn

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

标签 统计

seaborn ×13

python ×12

matplotlib ×8

python-3.x ×2

categorical-data ×1

pandas ×1