标签: seaborn

如何理解 Seaborn 的热图注释格式?

我正在寻找一种seaboarn通过指定fmt关键字在的热图上将“0.0045”显示为“0.45%”的方法:

sns.heatmap(data, annot=True, fmt='??')
Run Code Online (Sandbox Code Playgroud)

但是,我没有找到要使用的格式列表。在不同的示例之间搜索,我看到了“d”、“.2g”、“.1f”、“.1f%”。但不清楚我们在这里假设的约定是什么。

这是假设人们对格式格式有共同的理解吗?或者这出现在我错过的文档页面上?

python matplotlib seaborn

14
推荐指数
2
解决办法
2万
查看次数

在seaborn情节中使用sns.set

我已经找到了一个明确的答案并且找不到一个,如果之前有人问过,我道歉.我正在使用seaborn 0.6和matplotlib 1.4.3.我想在ipython笔记本中创建许多数字时暂时改变绘图的样式.

具体来说,在这个例子中,我想基于每个图更改字体大小和背景样式.

这创建了我正在寻找的图,但是全局定义了参数:

import seaborn as sns
import numpy as np

x = np.random.normal(size=100)

sns.set(style="whitegrid", font_scale=1.5)
sns.kdeplot(x, shade=True);
Run Code Online (Sandbox Code Playgroud)

然而这失败了:

with sns.set(style="whitegrid", font_scale=1.5):
    sns.kdeplot(x, shade=True);
Run Code Online (Sandbox Code Playgroud)

有:

---------------------------------------------------------------------------
AttributeError                            Traceback (most recent call last)
<ipython-input-10-70c5b03f9aa8> in <module>()
----> 1 with sns.set(style="whitegrid", font_scale=1.5):
      2     sns.kdeplot(x, shade=True);

AttributeError: __exit__
Run Code Online (Sandbox Code Playgroud)

我也尝试过:

with sns.axes_style(style="whitegrid", rc={'font.size':10}):
    sns.kdeplot(x, shade=True);
Run Code Online (Sandbox Code Playgroud)

哪个不会失败,但它也不会改变字体的大小.任何帮助将非常感激.

python seaborn

13
推荐指数
1
解决办法
9685
查看次数

Seaborn tsplot不能很好地在x轴上显示日期时间

下面我有以下脚本创建一个简单的时间序列图:

%matplotlib inline
import datetime
import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt

fig, ax = plt.subplots()

df = []
start_date = datetime.datetime(2015, 7, 1)
for i in range(10):
    for j in [1,2]:
        unit = 'Ones' if j == 1 else 'Twos'
        date = start_date + datetime.timedelta(days=i)

        df.append({
                'Date': date.strftime('%Y%m%d'),
                'Value': i * j,
                'Unit': unit
            })

df = pd.DataFrame(df)

sns.tsplot(df, time='Date', value='Value', unit='Unit', ax=ax)
fig.autofmt_xdate()
Run Code Online (Sandbox Code Playgroud)

结果如下:

在此输入图像描述

正如你所看到的那样,x轴的日期时间有奇怪的数字,而不是常见的"漂亮"表示matplotlib和其他绘图工具.我已经尝试了很多东西,重新格式化数据,但它永远不会干净.有人知道的方法吗?

python datetime matplotlib seaborn

13
推荐指数
2
解决办法
2万
查看次数

在seaborn barplot中绘制value_counts()

我无法在海边拍摄一个画布.这是我可重复的数据:

people = ['Hannah', 'Bethany', 'Kris', 'Alex', 'Earl', 'Lori']
reputation = ['awesome', 'cool', 'brilliant', 'meh', 'awesome', 'cool']
dictionary = dict(zip(people, reputation))
df = pd.DataFrame(dictionary.values(), dictionary.keys())
df = df.rename(columns={0:'reputation'})
Run Code Online (Sandbox Code Playgroud)

然后我想得到一个条形图,显示不同声誉的价值计数.我试过了:

sns.barplot(x = 'reputation', y = df['reputation'].value_counts(), data = df, ci = None)
Run Code Online (Sandbox Code Playgroud)

sns.barplot(x = 'reputation', y = df['reputation'].value_counts().values, data = df, ci = None)
Run Code Online (Sandbox Code Playgroud)

但两者都返回空白图.

知道我能做些什么才能得到这个吗?

python pandas seaborn

13
推荐指数
2
解决办法
2万
查看次数

用hexbin过度绘制多组数据

我正在对一个庞大且非常密集的数据集进行一些KMeans聚类,我正在尝试找出可视化聚类的最佳方法.

在2D中,看起来像hexbin会做得很好,但我无法在同一个数字上过度绘制集群.我想分别在每个簇上使用hexbin,每个簇使用不同的颜色映射,但由于某些原因,这似乎不起作用.图像显示了当我尝试绘制第二组和第三组数据时得到的结果.

关于如何解决这个问题的任何建议? 在此输入图像描述

在一些摆弄之后,我能够用Seaborn的kdeplot来做到这一点

在此输入图像描述

python cluster-analysis matplotlib scatter-plot seaborn

13
推荐指数
1
解决办法
1140
查看次数

限制seaborn countplot中显示的组数?

是否可以仅显示顶部/底部nsns.countplot()

使用seaborn网站上的一个例子,

sns.countplot(y="deck", hue="class", data=titanic, palette="Greens_d");
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

是否有任何简单(或甚至相对简单)的方法将此情节限制为仅3个甲板(组)而不是显示所有7个或者这是用sns.bargraph或者只是简单的matplotlib 更好的完成的东西?

python matplotlib seaborn

13
推荐指数
2
解决办法
9117
查看次数

seaborn violinplots:改变小提琴颜色,轴名称,图例

matplotlib在我最近发现之前,我曾经使用过我的所有情节seaborn.我发现特别有趣的是它允许你拆分小提琴以比较给定的hue变量.

好吧,我的主要问题是我不知道为了改变小提琴颜色,轴名称将图例放在我想要的地方我需要修改什么.

以下是我遵循的示例seaborn:

    import seaborn as sns
    tips = sns.load_dataset("tips")
    sns.set(style="ticks", palette="colorblind")
    g = sns.FacetGrid(tips, col="time", size=4, aspect=.75)
    g = g.map(sns.violinplot, "sex", "total_bill", "smoker", inner=None, linewidth=1, scale="area", split=True, width=0.75).despine(left=True).add_legend(title="smoker")
    g.savefig(os.path.join(options.output_dir, "figures", "violinplots.png"))
Run Code Online (Sandbox Code Playgroud)

这是输出数字violinplots.png:

在此输入图像描述

虽然我宁愿喜欢这样的东西:

在此输入图像描述

总结一下:

  • 用途whiteblue颜色
  • 替换轴 names
  • leftmost y axis只写
  • 做我自己的 legend with the blue category only

先感谢您.欢迎任何帮助.


如果有人感兴趣,这是我最终通过MrPedru22解决这个数字的方式:

import seaborn as sns
tips = …
Run Code Online (Sandbox Code Playgroud)

python matplotlib seaborn

13
推荐指数
1
解决办法
1万
查看次数

是否有用于临时更改matplotlib设置的上下文管理器?

pandas和中seaborn,可以使用with关键字临时更改显示/绘图选项,该关键字仅将指定的设置应用于缩进代码,同时保持全局设置不变:

print(pd.get_option("display.max_rows"))

with pd.option_context("display.max_rows",10):
    print(pd.get_option("display.max_rows"))

print(pd.get_option("display.max_rows"))
Run Code Online (Sandbox Code Playgroud)

日期:

60
10
60
Run Code Online (Sandbox Code Playgroud)

当我同样尝试with mpl.rcdefaults():或者with mpl.rc('lines', linewidth=2, color='r'):,我收到AttributeError: __exit__.

有没有办法临时更改matplotlib中的rcParams,以便它们只适用于选定的代码子集,还是我必须手动来回切换?

python matplotlib pandas seaborn

13
推荐指数
2
解决办法
1559
查看次数

seaborn热图图中的离散传说

我使用这里的数据来构建使用seaborn和pandas的热图.

输入csv文件位于:https://www.dropbox.com/s/5jc1vr6u8j7058v/LUH2_trans_matrix.csv? dl = 0

码:

    import pandas
    import seaborn.apionly as sns

    # Read in csv file
    df_trans = pandas.read_csv('LUH2_trans_matrix.csv')

    sns.set(font_scale=0.8)
    cmap = sns.cubehelix_palette(start=2.8, rot=.1, light=0.9, as_cmap=True)
    cmap.set_under('gray')  # 0 values in activity matrix are shown in gray (inactive transitions)
    df_trans = df_trans.set_index(['Unnamed: 0'])
    ax = sns.heatmap(df_trans, cmap=cmap, linewidths=.5, linecolor='lightgray')

    # X - Y axis labels
    ax.set_ylabel('FROM')
    ax.set_xlabel('TO')

    # Rotate tick labels
    locs, labels = plt.xticks()
    plt.setp(labels, rotation=0)
    locs, labels = plt.yticks()
    plt.setp(labels, rotation=0)

    # revert matplotlib …
Run Code Online (Sandbox Code Playgroud)

python matplotlib pandas seaborn

13
推荐指数
3
解决办法
8292
查看次数

使用Seaborn绘制多列Pandas DataFrame

假设我有列的DataFrame ['X_Axis','col_2','col_3',...,'col_n',]

我需要在X轴上绘制第一列并在Y轴上绘制.仅供参考:所有值均已根据X轴进行分组,X轴值范围为,0-25并且所有其他列值已标准化为刻度0 - 1.我希望它在相同的图形图上,而不是子图.

首选:FactorPlot,法线图.

python matplotlib dataframe pandas seaborn

13
推荐指数
2
解决办法
3万
查看次数