鉴于以下热图,我将如何删除轴标题('月'和'年')?
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)
我想知道是否可以创建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)
结果:
我正在使用来自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) 我想比较一组得分(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)
我对这个情节有一些问题:
model值original是特殊的,因为所有其他分布应该与分布进行比较original.这应该在视图中直观地反映出来.我可以制作original每组的第一个盒子吗?我可以以某种方式偏移或标记它吗?是否有可能在每个original分布的中位数和一组方框中绘制一条水平线?score非常小,如何正确缩放y轴来显示它们?编辑:
这是一个带有对数刻度的y轴的示例 - 也不是理想的.为什么有些盒子似乎在低端切断?
我正在尝试使用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的盒子情节传单没有显示?
我把这个例子复制粘贴到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到该脚本的最后一行,但它仍然无法正常工作.
这是我得到的输出:

我正在尝试用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图.任何想法都非常感谢.
当使用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"中.
在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)
我使用热图来显示混淆矩阵.我喜欢标准颜色,但我希望浅橙色为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)
我使用seaborn绘制分组条形图,如https://seaborn.pydata.org/examples/factorplot_bars.html
给我:https: //seaborn.pydata.org/_images/factorplot_bars.png
传说中有一个标题(性别),我想删除.
我怎么能实现这一目标?