标签: seaborn

在Seaborn隐藏轴标题

鉴于以下热图,我将如何删除轴标题('月'和'年')?

import seaborn as sns

# Load the example flights dataset and conver to long-form
flights_long = sns.load_dataset("flights")
flights = flights_long.pivot("month", "year", "passengers")

# Draw a heatmap with the numeric values in each cell
sns.heatmap(flights, annot=True, fmt="d", linewidths=.5)
Run Code Online (Sandbox Code Playgroud)

当前图表

python-3.x seaborn

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

Seaborn计数图,每组标准化y轴

我想知道是否可以创建Seaborn计数图,但是不是y轴上的实际计数,而是显示其组内的相对频率(百分比)(如hue参数所指定).

我用以下方法解决了这个问题,但我无法想象这是最简单的方法:

# Plot percentage of occupation per income class
grouped = df.groupby(['income'], sort=False)
occupation_counts = grouped['occupation'].value_counts(normalize=True, sort=False)

occupation_data = [
    {'occupation': occupation, 'income': income, 'percentage': percentage*100} for 
    (income, occupation), percentage in dict(occupation_counts).items()
]

df_occupation = pd.DataFrame(occupation_data)

p = sns.barplot(x="occupation", y="percentage", hue="income", data=df_occupation)
_ = plt.setp(p.get_xticklabels(), rotation=90)  # Rotate labels
Run Code Online (Sandbox Code Playgroud)

结果:

含有seaborn的百分比图

我正在使用来自UCI机器学习库的众所周知的成人数据集.pandas数据框的创建方式如下:

# Read the adult dataset
df = pd.read_csv(
    "data/adult.data",
    engine='c',
    lineterminator='\n',

    names=['age', 'workclass', 'fnlwgt', 'education', 'education_num',
           'marital_status', 'occupation', 'relationship', 'race', 'sex',
           'capital_gain', 'capital_loss', 'hours_per_week', …
Run Code Online (Sandbox Code Playgroud)

python pandas seaborn

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

调整seaborn.boxplot

我想比较一组得分(score)的分布,按一些类别(centrality)分组并用其他一些()着色model.我用seaborn试过以下内容:

plt.figure(figsize=(14,6))
seaborn.boxplot(x="centrality", y="score", hue="model", data=data, palette=seaborn.color_palette("husl", len(models) +1))
seaborn.despine(offset=10, trim=True)
plt.savefig("/home/i11/staudt/Eval/properties-replication-test.pdf", bbox_inches="tight")
Run Code Online (Sandbox Code Playgroud)

我对这个情节有一些问题:

  • 有大量的异常值,我不喜欢它们是如何绘制的.我可以删除它们吗?我可以改变外观以减少混乱吗?我可以给它们着色至少使它们的颜色与盒子颜色相匹配吗?
  • modeloriginal是特殊的,因为所有其他分布应该与分布进行比较original.这应该在视图中直观地反映出来.我可以制作original每组的第一个盒子吗?我可以以某种方式偏移或标记它吗?是否有可能在每个original分布的中位数和一组方框中绘制一条水平线?
  • 有些值score非常小,如何正确缩放y轴来显示它们?

在此输入图像描述

编辑:

这是一个带有对数刻度的y轴的示例 - 也不是理想的.为什么有些盒子似乎在低端切断?

在此输入图像描述

python plot matplotlib boxplot seaborn

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

log-log plot with seaborn jointgrid

我正在尝试使用seaborn JointGrid对象创建一个带有KDE和与每个轴相关联的直方图的loglog图.这让我非常接近,但直方图箱不能很好地转换为logspace.有没有办法在不重新创建边缘轴的情况下轻松完成这项工作?

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

data = sns.load_dataset('tips')
g = sns.JointGrid('total_bill', 'tip', data)
g.plot_marginals(sns.distplot, hist=True, kde=True, color='blue')
g.plot_joint(plt.scatter, color='black', edgecolor='black')
ax = g.ax_joint
ax.set_xscale('log')
ax.set_yscale('log')
g.ax_marg_x.set_xscale('log')
g.ax_marg_y.set_yscale('log')
Run Code Online (Sandbox Code Playgroud)

输出图

matplotlib seaborn loglog

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

Matplotlib框图传单没有显示

我想知道是否有人有问题Matplotlib的盒子情节传单没有显示?

我把这个例子复制粘贴到python脚本中:http: //blog.bharatbhole.com/creating-boxplots-with-matplotlib/

...但是盒子图传单(异常值)没有显示.有谁知道为什么我可能不会看到它们?对不起,如果这是一个愚蠢的问题,但我不能为我的生活弄清楚为什么它不起作用.

## Create data
np.random.seed(10)
collectn_1 = np.random.normal(100, 10, 200)
collectn_2 = np.random.normal(80, 30, 200)
collectn_3 = np.random.normal(90, 20, 200)
collectn_4 = np.random.normal(70, 25, 200)

## combine these different collections into a list    
data_to_plot = [collectn_1, collectn_2, collectn_3, collectn_4]

# Create a figure instance
fig = plt.figure(1, figsize=(9, 6))

# Create an axes instance
ax = fig.add_subplot(111)

# Create the boxplot
bp = ax.boxplot(data_to_plot)
Run Code Online (Sandbox Code Playgroud)

我也尝试添加showfliers=True到该脚本的最后一行,但它仍然无法正常工作.

这是我得到的输出:

在此输入图像描述

python matplotlib boxplot seaborn

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

如何找到(seaborn)KDE图中的中位数?

我正在尝试用seaborn 进行核密度估计(KDE)图并找到中位数.代码看起来像这样:

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

sns.set_palette("hls", 1)
data = np.random.randn(30)
sns.kdeplot(data, shade=True)

# x_median, y_median = magic_function()
# plt.vlines(x_median, 0, y_median)

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

正如您所看到的,我需要magic_function()从中获取中值x和y值kdeplot.然后我想用例如vlines.但是,我无法弄清楚如何做到这一点.结果应该看起来像这样(显然黑色中间条在这里是错误的):

在此输入图像描述

我想我的问题与seaborn并不严格相关,也适用于其他类型的matplotlib图.任何想法都非常感谢.

python plot matplotlib seaborn

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

在seaborn heatmap中自动调整字体大小

当使用seaborn热图时,有没有办法自动调整字体大小以使其完全适合方块内?例如:

sns.heatmap(corrmat, vmin=corrmat.values.min(), vmax=1, square=True, cmap="YlGnBu", 
        linewidths=0.1, annot=True, annot_kws={"size":8})  
Run Code Online (Sandbox Code Playgroud)

这里的大小设置在"annot_kws"中.

python matplotlib seaborn

17
推荐指数
4
解决办法
8647
查看次数

导出pandas样式化表格到图像文件

在jupyter笔记本中运行时,下面的代码呈现一个颜色渐变格式的表,我想将其导出到图像文件.

笔记本呈现的结果"styled_table"对象是pandas.io.formats.style.Styler类型.

我一直无法找到将Styler导出到图像的方法.

我希望有人可以分享一个出口的工作示例,或者给我一些指示.

import pandas as pd
import seaborn as sns

data = {('count', 's25'): 
       {('2017-08-11', 'Friday'): 88.0,
        ('2017-08-12', 'Saturday'): 90.0,
        ('2017-08-13', 'Sunday'): 93.0},
        ('count', 's67'): 
       {('2017-08-11', 'Friday'): 404.0,
        ('2017-08-12', 'Saturday'): 413.0,
        ('2017-08-13', 'Sunday'): 422.0},
        ('count', 's74'): 
       {('2017-08-11', 'Friday'): 203.0,
        ('2017-08-12', 'Saturday'): 227.0,
        ('2017-08-13', 'Sunday'): 265.0},
        ('count', 's79'): 
       {('2017-08-11', 'Friday'): 53.0,
        ('2017-08-12', 'Saturday'): 53.0,
        ('2017-08-13', 'Sunday'): 53.0}}

table = pd.DataFrame.from_dict(data)
table.sort_index(ascending=False, inplace=True)

cm = sns.light_palette("seagreen", as_cmap=True)
styled_table = table.style.background_gradient(cmap=cm)
styled_table
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

python export pandas seaborn jupyter-notebook

17
推荐指数
2
解决办法
9475
查看次数

如何反转seaborn热图彩色条的颜色

我使用热图来显示混淆矩阵.我喜欢标准颜色,但我希望浅橙色为0,深紫色为最高值.

我设法只使用另一组颜色(从浅到深的紫罗兰色),设置:

colormap = sns.cubehelix_palette(as_cmap=True)
ax = sns.heatmap(cm_prob, annot=False, fmt=".3f", xticklabels=print_categories, yticklabels=print_categories, vmin=-0.05, cmap=colormap)
Run Code Online (Sandbox Code Playgroud)

但我想保留这些标准的.这是我的代码和我得到的图像.

ax = sns.heatmap(cm_prob, annot=False, fmt=".3f", xticklabels=print_categories, yticklabels=print_categories, vmin=-0.05)
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

colors heatmap seaborn

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

删除Seaborn barplot图例标题

我使用seaborn绘制分组条形图,如https://seaborn.pydata.org/examples/factorplot_bars.html

给我:https: //seaborn.pydata.org/_images/factorplot_bars.png

传说中有一个标题(性别),我想删除.

我怎么能实现这一目标?

python matplotlib bar-chart seaborn

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