如何更改图像的大小以使其适合打印?
例如,我想使用A4纸,其横向尺寸为11.7英寸×8.27英寸.
我有一个简单的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标签全部一起运行,使它们不可读.如何旋转文本以使标签可读?
我正在使用factorplot(kind="bar")seaborn.
情节很好,除了传说是错位的:右边太多,文字从情节的阴影区域出来.
如何让seaborn将传奇置于其他地方,例如左上角而不是右中角?
我在将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.
有人能帮忙吗?
我试图从使用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) 我正试图在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) 我正在尝试为某些数据绘制一个条形样式"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只是在同一个图表上绘制它们?
一些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对象上完成绘图吗?或者有没有办法阻止这些方法在每次调用时生成新数据?
我正在尝试绘制与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 计数的颜色,就像右上角的散点颜色显示为色调一样。我怎样才能做到这一点?
我是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)
我原本期望两个因子图同时出现,但不仅如此,我还获得了两个额外的空白子图,如上所示
编辑:图像不存在
到目前为止我已经尝试过以下代码:
# 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) 我正在尝试并排生成两个 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的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'的值