2014-10-02 70 views
31
%pylab inline 

import pandas as pd 
import numpy as np 
import matplotlib as mpl 
import seaborn as sns 

typessns = pd.DataFrame.from_csv('C:/data/testesns.csv', index_col=False, sep=';') 

mpl.rc("figure", figsize=(45, 10)) 
sns.factorplot("MONTH", "VALUE", hue="REGION", data=typessns, kind="box", palette="OrRd"); 

enter image description here如何改变figuresize使用seaborn factorplot

我总是得到一个小尺寸的身影,不管大小我在figsize已经指定... 如何解决呢?

回答

44

是一个小更具体:

%matplotlib inline 

import seaborn as sns 

exercise = sns.load_dataset("exercise") 

# Defaults are size=5, aspect=1 
sns.factorplot("kind", "pulse", "diet", exercise, kind="point", size=2, aspect=1) 
sns.factorplot("kind", "pulse", "diet", exercise, kind="point", size=4, aspect=1) 
sns.factorplot("kind", "pulse", "diet", exercise, kind="point", size=4, aspect=2) 

要在争论“尺寸”或“方面”传递到sns.factorplot()构建的情节时。

尺寸将改变高度,同时保持纵横比(所以它也将也如果仅仅大小被改变得到更宽。)

看点将改变宽度,同时保持高度恒定。

上面的代码应该可以在ipython笔记本上本地运行。

在这些示例中,绘图大小会减少以显示效果,并且因为以png的形式保存的上述代码的绘图相当大。这也表明尺寸/方面包括边缘的图例。

尺寸= 2,纵横= 1

size=2, aspect=1

大小= 4,方面= 1

size=4, aspect=1

大小= 4,方面= 2

size=4, aspect=2

此外,出于这一绘图功能的所有其它有用的参数/参数和默认值可与一旦“SNS”模块被加载看到:

help(sns.factorplot) 
+0

这是唯一适用于我的解决方案。尝试所有其他人,即使没有错误,该数字仍然显示为默认大小和方面(小和方形)。 – szeitlin 2016-10-05 15:44:47

4

该图的大小由sizeaspect参数控制为factorplot。它们对应于每个方面的尺寸(“size”的确意思是“高度”,然后size * aspect给出了宽度),所以如果您针对整个图形的特定尺寸瞄准,则需要从那里向后工作。

+0

我使用matplotlib和Seaborn,所以道歉的愚蠢的问题的第一天,但​​什么是'mpl.rc( “人物”,figsize =(45,10))'好那么,如果不控制数字的大小呢?我也看到了这里使用的同样的'mpl.rc'代码:https://github.com/mwaskom/seaborn/issues/112 - 并且它不会改变我的地块的大小。 – slhck 2015-03-20 15:54:46

+0

请参阅https://github.com/mwaskom/seaborn/issues/444 – mwaskom 2015-03-20 19:27:12

17

mpl.rc被存储在全局字典(见http://matplotlib.org/users/customizing.html)。 所以,如果你只是想改变一个图(局部)的大小,它会做的伎俩:

plt.figure(figsize=(45,10)) 
sns.factorplot(...) 

它的工作我使用matplotlib-1.4.3seaborn-0.5.1

+1

为我工作,直到我尊重你的顺序,'plt.figure'必须先走。谢谢 – Overdrivr 2016-10-05 09:12:13

+0

确实对我有用。 hrmm – ansonw 2017-04-04 20:43:24

+0

在这种情况下,您还需要'import matplotlib.pyplot as plt' – psychemedia 2017-04-12 11:32:55

0

如果你只是想缩放的图使用下面的代码:

import matplotlib.pyplot as plt 
plt.figure(figsize=(8, 6)) 
sns.factorplot("MONTH", "VALUE", hue="REGION", data=typessns, kind="box", palette="OrRd"); // OR any plot code