标签: seaborn

安全 Seaborn 主题

我最近发现了seaborn,发现有很多可能的风格组合。目前,我只是使用默认的 Seaborn 配置,以改进 matplotlib 风格来绘制数据(基本上是点系列或函数图,而不是真正的统计数据)。

感谢Prettyplotlib我发现了 Seaborn 。

有没有人已经考虑过一个“安全”主题,它可以很好地渲染绘图功能,并旨在为色盲人士或黑白打印提供良好的渲染?

谢谢

编辑:我目前正在体验“hls”和“Set2”调色板。后者似乎对色盲有好处,但我认为黑白渲染效果很差。=(

python seaborn

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

Seaborn 中的 X 轴间隔不正确

我有一个多级索引数据框,我试图在 Seaborn 中显示它。该图显示正常,但 x 轴的值被视为文本标签而不是实际的 x 值。下面的代码片段显示了示例数据的制作和绘制方式:

>>> import numpy, pandas, seaborn
>>> from matplotlib import pyplot
>>> index = pandas.MultiIndex.from_product((list('abc'), [10**x for x in range(4)]), names=['letters', 'powers'])
>>> index
MultiIndex(levels=[['a', 'b', 'c'], [1, 10, 100, 1000]],
           labels=[[0, 0, 0, 0, 1, 1, 1, 1, 2, 2, 2, 2], [0, 1, 2, 3, 0, 1, 2, 3, 0, 1, 2, 3]],
           names=['letters', 'powers'])

>>> df = pandas.DataFrame(numpy.random.randn(12, 2), index=index, columns=['x', 't'])
>>> df
                       x         t
letters powers                    
a       1       1.764052 …
Run Code Online (Sandbox Code Playgroud)

pandas seaborn

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

Seaborn 中的补丁

我的目的是在seaborn的特定坐标处添加补丁lmplot

带补丁的预期seaborn图

有没有办法添加一个矩形/正方形补丁lmplot

我能够通过 打印出情节sns.lmplot()。但是当我尝试使用ax.add_patch()具有相关坐标的语句添加矩形面片时,出现错误。

#Sample code to generate lmplot  and add patch   
ax= sns.lmplot('A', 'B', hue="group", data=res_me,fit_reg=False, \
              palette="Set1",size=10, aspect=1, scatter_kws={"s": 100,"linewidths":2,"edgecolor":"black"})

ax.add_patch(patches.Rectangle((0.912, 0.72), 1.02, .802,fill=False,edgecolor='green',lw=3))
Run Code Online (Sandbox Code Playgroud)

我收到以下错误。

AttributeError: 'FacetGrid' object has no attribute 'add_patch'
Run Code Online (Sandbox Code Playgroud)

那么我们可以添加补丁吗FacetGrid

python plot seaborn

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

与 Pandas 和 Seaborn 绘制日期

我有一个 DataFrame,其中每一行都是一个事件,它有一列datetime指定事件日期和时间的值。

我只想绘制每天的事件数量,并能够指定 x 轴的开始和结束日期。我怎样才能做到这一点?

python matplotlib pandas seaborn

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

使用 regplot 调用图形对象时如何抑制seaborn输出

我正在尝试将数据绘制到 matplotlib 中的图形和相应的轴上,随着新工作的出现,请回忆一下轴上带有附加图的图形:

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

x=np.arange(0,20)
y=2*x

fig,ax=plt.subplots()
ax.scatter(x,x)

ax.scatter(x,y)
fig
Run Code Online (Sandbox Code Playgroud)

如果我使用 seaborn 的 regplot,这与 matplotlib 配合得很好:

fig2,ax2=plt.subplots()
sns.regplot(x,x,ax=ax2,fit_reg=False)

sns.regplot(x,y,ax=ax2,fit_reg=False)
fig2
Run Code Online (Sandbox Code Playgroud)

Fig2 生成我想要的图形,但 regplot 命令生成一个空图形。有没有办法抑制 regplot 的空输出或让它显示更新的 ax2 而不调用Fig2?

python matplotlib seaborn

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

Seaborn 自动颜色选择

我正在使用seaborn 创建水平条形图。从这个例子来看,我是如何设置颜色的。

sns.set_color_codes("pastel")
sns.barplot(x="total", y="abbrev", data=crashes, label="Total", color="b")
Run Code Online (Sandbox Code Playgroud)

因此,在此示例中,“总计”字段将具有来自“粉彩”调色板的颜色“b”(蓝色)。

我有大约 60 个不同的字段,并且我不想手动设置所有颜色。有没有办法让seaborn自动选择颜色(甚至调色板)?

就目前情况而言,我的计划是在一个周期中创建条形图

for field in fields:
    sns.set_color_codes(foo)
    sns.barplot(x=field, y="abbrev", data=crashes, label=field, color="bar")
Run Code Online (Sandbox Code Playgroud)

其中foobar是由seaborn以某种方式为我生成的。

python pandas seaborn

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

如何在Python中按字符给文本着色?

我想给字符串着色,但每个字符都不同。我有一个包含文本的数组和一个值在 -1 到 1 之间的数组,其中 -1 应该代表“红色”,1 应该代表“绿色”。0 可以是白色、黄色或介于红色和绿色之间的褪色。

每个角色都应该有与得分有关的颜色。

数据如下:

array([['a', 'c', 'm', 'e', 't', 'e', 'l', 'l', 'm', 'e'],
   ['0.1716490432811229', '0.062389299621661884',
    '0.26545182258229466', '-0.07999088246625552',
    '-0.4499291603930515', '-0.7465421931327068', '-0.812006046307664',
    '-0.8443500193245104', '-0.865253671942029','-0.8697487071105282',]],
  dtype='<U32')
Run Code Online (Sandbox Code Playgroud)

我能够生成颜色:

import matplotlib as mpl
import matplotlib.cm as cm

norm = mpl.colors.Normalize(vmin=-1, vmax=1)
cmap = cm.RdYlGn
x = 0.3

m = cm.ScalarMappable(norm=norm, cmap=cmap)
#print(m.to_rgba(x))

color = m.to_rgba(ws)
color
Run Code Online (Sandbox Code Playgroud)

结果如下所示(r、g、b、a):

array([[ 0.87435602,  0.94709727,  0.57708574,  1.        ],
       [ 0.9561707 ,  0.98154556,  0.68904268,  1.        ],
       [ 0.83529412,  0.93048827,  0.5349481 ,  1.        ], …
Run Code Online (Sandbox Code Playgroud)

python matplotlib seaborn jupyter-notebook

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

Seaborn无法更改figsize

无法更改无花果大小,请参见示例:

df = pd.DataFrame({'subset_product':['A','A','A','B','B','C','C'],
                   'subset_close':[1,1,0,1,1,1,0]})

prod_counts = df.groupby('subset_product').size().rename('prod_counts')
df['prod_count'] = df['subset_product'].map(prod_counts)
g = sns.factorplot(y='prod_count',x='subset_product',hue='subset_close',data=df,kind='bar',palette='muted',legend=False,ci=None)
plt.rcParams["figure.figsize"] = [20,10]
plt.legend(loc='best')
Run Code Online (Sandbox Code Playgroud)

尽管改变了Figsize,它总是给我相同的绘图大小和一个空的绘图

在此输入图像描述

python matplotlib pandas seaborn

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

在Python中使用seaborn在分布图上显示峰度、偏度等指标

我有以下数据:

coll_prop_tenure    coll_prop_12m   coll_prop_6m    coll_prop_3m
0.04                0.04            0.06            0.08
0                   0               0               0
0                   0               0               0
0.06                0.06            0.1             0
0.38                0.38            0.25            0
0.61                0.61            0.66            0.61
0.01                0.01            0.02            0.02
0.1                 0.1             0.12            0.16
0.04                0.04            0.04            0.09
0.22                0.22            0.22            0.22
0.72                0.72            0.73            0.72
0.39                0.39            0.45            0.64
Run Code Online (Sandbox Code Playgroud)

我使用 seaborn 的 distplot 来绘制分布图,如下所示:

######################## density plot #########################################
f, axes = plt.subplots(2, 2, figsize=(7, 7), sharex=True)
sns.distplot( data[cols_viz[0]] , color="skyblue", ax=axes[0, 0])
print("Skewness: %f" % data[cols_viz[0]].skew()) …
Run Code Online (Sandbox Code Playgroud)

python seaborn

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

使用两个数据框绘制并排条形图

我有 2 个数据框,其中包含品牌和计数列。

例子:

brand | count
------+-------
Gucci | 1234
Chanel| 234444
Run Code Online (Sandbox Code Playgroud)

DF1比DF2拥有更多品牌。我想创建一个条形图,其中 x 轴是所有品牌,y 轴是计数。我不知道如何实现这一点,所以我得到了按品牌分组的每个数据框的并排条形图。

  ax = df_pred.plot()
  prev_pred.plot(ax=ax)
  plt.show()
Run Code Online (Sandbox Code Playgroud)

我尝试了这段代码,但无法将其按品牌分组。我使用 sns.barplot 创建单独的条形图,但我想覆盖它们。我想要 DF1 中的所有品牌,因此 DF2 中的一些计数将为 0,但这就是我想要比较的。任何帮助深表感谢。

python matplotlib pandas seaborn

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

标签 统计

seaborn ×10

python ×9

matplotlib ×5

pandas ×5

jupyter-notebook ×1

plot ×1