如何使用seaborn factorplot更改figureize

时间:2014-10-02 15:00:44

标签: matplotlib seaborn

%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

无论我在figsize中指定的大小,我总是得到一个小尺寸的数字...... 如何解决?

7 个答案:

答案 0 :(得分:73)

更具体一点:

%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)

在构建绘图时,您希望将参数'size'或'aspect'传递给sns.factorplot()。

尺寸会改变高度,同时保持宽高比(因此如果仅更改尺寸,它也会变得更宽。)

Aspect 会在保持高度不变的同时改变宽度。

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

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

尺寸= 2,方面= 1

size=2, aspect=1

尺寸= 4,方面= 1

size=4, aspect=1

尺寸= 4,方面= 2

size=4, aspect=2

此外,在加载'sns'模块后,可以查看此绘图功能的所有其他有用参数/参数和默认值:

help(sns.factorplot)

答案 1 :(得分:21)

mpl.rc存储在全局字典中(请参阅http://matplotlib.org/users/customizing.html)。 所以,如果你只想改变一个数字(本地)的大小,它就可以解决问题:

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

使用matplotlib-1.4.3seaborn-0.5.1

对我有用

答案 2 :(得分:4)

图的大小由size的{​​{1}}和aspect参数控制。它们对应于每个 facet的大小(“factorplot”实际上意味着“高度”,然后size给出宽度),所以如果你的目标是特定的大小整个人物,你需要从那里向后工作。

答案 3 :(得分:3)

  1. 请勿使用%pylab inline,不推荐使用%matplotlib inline
  2. 问题并非针对IPython。
  3. 使用seaborn .set_style函数,将您的rc作为第二个参数或kwarg传递给它:http://web.stanford.edu/~mwaskom/software/seaborn/generated/seaborn.set_style.html

答案 4 :(得分:1)

如果您只想缩放图形,请使用以下代码:

#include<iostream>
using namespace std;
class node{
    public:
    int data;
    node *next;
};

void insertdata(int element ,node *&head){

    node *newnode = new node();
    newnode -> data = element;
    newnode -> next = NULL;

    node *itr;
    itr=head;
    if(head == NULL)
    head = newnode;
    else{

        while(itr->next != NULL){
            itr = itr-> next;
        }

        itr->next = newnode;
    }
}

void print(node *head){
    node *print = head;
    while(print != NULL){
        cout<<print->data<<"\n";
        print = print -> next;
    }
}

int main(){
    node *head = NULL;
    insertdata(10,head);
    insertdata(20,head);
    insertdata(30,head);
    print(head);
    // do delete what you created via new
    while(head != NULL){
        node *next = head->next;
        delete head;
        head = next;
    }
    return 0;
}

答案 5 :(得分:0)

将seaborn导入为sns

sns.set(rc = {'figure.figsize':( 12.7,8.6)})

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

This is what I got

答案 6 :(得分:0)

截至2018年7月的注释:

seaborn.__version__ == 0.9.0

影响上述答案的两个主要变化

  1. factorplot函数已重命名为catplot()

  2. 对于多图网格功能和使用它们的功能,size参数已重命名为height

  

https://seaborn.pydata.org/whatsnew.html

@Fernando Hernandez 提供的答案应根据以下内容进行调整:

%matplotlib inline

import seaborn as sns

exercise = sns.load_dataset("exercise")

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