如何更改图像的大小以使其适合打印?
例如,我想使用A4纸,其横向尺寸为11.7英寸×8.27英寸.
我确定我忘记了一些非常简单的事情,但我无法获得与Seaborn合作的某些情节.
如果我做:
import seaborn as sns
Run Code Online (Sandbox Code Playgroud)
然后我像matplotlib一样创建的任何绘图都获得了Seaborn样式(背景中的灰色网格).
但是,如果我尝试做其中一个示例,例如:
In [1]: import seaborn as sns
In [2]: sns.set()
In [3]: df = sns.load_dataset('iris')
In [4]: sns.pairplot(df, hue='species', size=2.5)
Out[4]: <seaborn.axisgrid.PairGrid at 0x3e59150>
Run Code Online (Sandbox Code Playgroud)
pairplot函数返回一个PairGrid对象,但该图不显示.
我有点困惑,因为matplotlib似乎运行正常,Seaborn样式应用于其他matplotlib图,但Seaborn函数似乎没有做任何事情.有没有人知道可能是什么问题?
我尝试了以下代码(test_seaborn.py
):
import matplotlib
matplotlib.use('Agg')
import matplotlib.pyplot as plt
matplotlib.style.use('ggplot')
import seaborn as sns
sns.set()
df = sns.load_dataset('iris')
sns_plot = sns.pairplot(df, hue='species', size=2.5)
fig = sns_plot.get_figure()
fig.savefig("output.png")
#sns.plt.show()
Run Code Online (Sandbox Code Playgroud)
但我得到这个错误:
Traceback (most recent call last):
File "test_searborn.py", line 11, in <module>
fig = sns_plot.get_figure()
AttributeError: 'PairGrid' object has no attribute 'get_figure'
Run Code Online (Sandbox Code Playgroud)
我希望决赛output.png
将会存在,看起来像这样:
我该如何解决这个问题?
我有一个简单的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标签全部一起运行,使它们不可读.如何旋转文本以使标签可读?
我正在尝试使用我自己的标签来制作Seaborn条形图,其代码如下:
import pandas as pd
import seaborn as sns
fake = pd.DataFrame({'cat': ['red', 'green', 'blue'], 'val': [1, 2, 3]})
fig = sns.barplot(x = 'val', y = 'cat',
data = fake,
color = 'black')
fig.set_axis_labels('Colors', 'Values')
Run Code Online (Sandbox Code Playgroud)
但是,我得到一个错误:
AttributeError: 'AxesSubplot' object has no attribute 'set_axis_labels'
Run Code Online (Sandbox Code Playgroud)
是什么赋予了?
我更喜欢使用matplotlib
OOP风格:
f, axarr = plt.subplots(2, sharex=True)
axarr[0].plot(...)
axarr[1].plot(...)
Run Code Online (Sandbox Code Playgroud)
这样可以更轻松地跟踪多个图形和子图.
问题:如何使用seaborn这种方式?或者,如何将此示例更改为OOP样式?如何将seaborn
绘图函数描述为lmplot
哪个Figure
或哪个Axes
绘图?
如何为此Seaborne图添加标题?让我们给它一个标题'我是一个标题'.
tips = sns.load_dataset("tips")
g = sns.FacetGrid(tips, col="sex", row="smoker", margin_titles=True)
g.map(sns.plt.scatter, "total_bill", "tip")
Run Code Online (Sandbox Code Playgroud)
我正在使用Seaborn的lmplot绘制线性回归,将我的数据集分成两组,并带有分类变量.
对于x和y,我想在两个图上手动设置下限,但是将上限保留在Seaborn默认值上.这是一个简单的例子:
import pandas as pd
import seaborn as sns
import random
n = 200
random.seed(2014)
base_x = [random.random() for i in range(n)]
base_y = [2*i for i in base_x]
errors = [random.uniform(0,1) for i in range(n)]
y = [i+j for i,j in zip(base_y,errors)]
df = pd.DataFrame({'X': base_x,
'Y': y,
'Z': ['A','B']*(n/2)})
mask_for_b = df.Z == 'B'
df.loc[mask_for_b,['X','Y']] = df.loc[mask_for_b,] *2
sns.lmplot('X','Y',df,col='Z',sharex=False,sharey=False)
Run Code Online (Sandbox Code Playgroud)
这输出如下:
但在这个例子中,我希望xlim和ylim为(0,*).我尝试使用sns.plt.ylim和sns.plt.xlim但这些只影响右手图.例:
sns.plt.ylim(0,)
sns.plt.xlim(0,)
Run Code Online (Sandbox Code Playgroud)
如何访问FacetGrid中每个绘图的xlim和ylim?
看起来很漂亮但是无法在网上找到有用的东西.
我都试过sns.boxplot('Day', 'Count', data= gg).title('lalala')
和sns.boxplot('Day', 'Count', data= gg).suptitle('lalala')
.没有用.我想这可能是因为我也在使用matplotlib.
我试图使用seaborn,因为它的distplot功能.但我更喜欢默认的matplotlib设置.当我导入seaborn时,它会自动改变我的身材的外观.
如何在不改变图形外观的情况下使用seaborn功能?