相关疑难解决方法(0)

在matplotlib条形图上添加值标签

我被困在一些感觉应该相对容易的事情上.我下面的代码是基于我正在研究的更大项目的示例.我没有理由发布所有细节,所以请接受我带来的数据结构.

基本上,我正在创建一个条形图,我只是想弄清楚如何在条形图上添加值标签(在条形图的中心,或者在它上面).一直在寻找网络上的样本,但没有成功实现我自己的代码.我相信解决方案要么是'text',要么是'annotate',但是我:a)不知道使用哪一个(一般来说,还没弄清楚何时使用哪个).b)无法看到要么呈现价值标签.非常感谢您的帮助,我的代码如下.提前致谢!

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
pd.set_option('display.mpl_style', 'default') 
%matplotlib inline

# Bring some raw data.
frequencies = [6, 16, 75, 160, 244, 260, 145, 73, 16, 4, 1]

# In my original code I create a series and run on that, 
# so for consistency I create a series from the list.
freq_series = pd.Series.from_array(frequencies)

x_labels = [108300.0, 110540.0, 112780.0, 115020.0, 117260.0, 119500.0, 
            121740.0, 123980.0, 126220.0, 128460.0, 130700.0]

# Plot the figure. …
Run Code Online (Sandbox Code Playgroud)

python data-visualization matplotlib python-2.7 pandas

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

Seaborn Barplot - 显示价值观

我想看看如何在Seaborn中做两件事,使用条形图来显示数据框中的值,但不在图表中

1)我想在绘制另一个字段时显示数据框中一个字段的值.例如,下面,我正在绘制'tip',但我想将'total_bill'的值置于每个柱的中心位置(即星期五上方325.88,星期六上方1778.40等)

2)有没有办法缩放条形的颜色,最小值'total_bill'具有最亮的颜色(在本例中为星期五),最高值'total_bill'具有最暗颜色.显然,当我进行缩放时,我会坚持使用一种颜色(即蓝色).

谢谢!我确信这很容易,但我很想念它..

虽然我看到其他人认为这是另一个问题(或两个)的重复,但我错过了如何使用图中没有的值作为标签或阴影的基础的部分.怎么说,用total_bill作为基础.对不起,我根据这些答案无法弄明白.

从以下代码开始,

import pandas as pd
import seaborn as sns
%matplotlib inline
df=pd.read_csv("https://raw.githubusercontent.com/wesm/pydata-    book/master/ch08/tips.csv", sep=',')
groupedvalues=df.groupby('day').sum().reset_index()
g=sns.barplot(x='day',y='tip',data=groupedvalues)
Run Code Online (Sandbox Code Playgroud)

我得到以下结果:

在此输入图像描述

临时解决方案:

for index, row in groupedvalues.iterrows():
    g.text(row.name,row.tip, round(row.total_bill,2), color='black', ha="center")
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

着色上,使用下面的示例,我尝试了以下内容:

import pandas as pd
import seaborn as sns
%matplotlib inline
df=pd.read_csv("https://raw.githubusercontent.com/wesm/pydata-book/master/ch08/tips.csv", sep=',')
groupedvalues=df.groupby('day').sum().reset_index()

pal = sns.color_palette("Greens_d", len(data))
rank = groupedvalues.argsort().argsort() 
g=sns.barplot(x='day',y='tip',data=groupedvalues)

for index, row in groupedvalues.iterrows():
    g.text(row.name,row.tip, round(row.total_bill,2), color='black', ha="center")
Run Code Online (Sandbox Code Playgroud)

但这给了我以下错误:

AttributeError:'DataFrame'对象没有属性'argsort'

所以我尝试了修改:

import pandas as pd
import seaborn as sns
%matplotlib inline
df=pd.read_csv("https://raw.githubusercontent.com/wesm/pydata-book/master/ch08/tips.csv", sep=',') …
Run Code Online (Sandbox Code Playgroud)

python matplotlib pandas seaborn

18
推荐指数
5
解决办法
5万
查看次数

matplotlib高级条形图

我需要重新创建一个类似于下面在Excel中创建的图表.我希望使用matplotlib,但似乎无法找到任何关于如何做这样的图表的例子或参考.我需要根据性能阈值对条形进行着色,并显示阈值.谁能指出我正确的方向?不过,我确实需要能够用Python做到这一点.情节例子

python plot graph matplotlib

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

如何使用seaborn distplot / histplot / displot绘制百分比

有没有办法在 distplot 上绘制百分比而不是计数?

ax = sns.FacetGrid(telcom, hue='Churn', palette=["teal", "crimson"], size=5, aspect=1)
ax = ax.map(sns.distplot, "tenure",  hist=True, kde=False)
ax.fig.suptitle('Tenure distribution in customer churn', y=1, fontsize=16, fontweight='bold');
plt.legend();
Run Code Online (Sandbox Code Playgroud)

代码生成的图像

python pandas seaborn displot histplot

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

绘制在seaborn clustermap之上

我使用生成了一个集群映射seaborn.clustermap.我想在热图的顶部绘制/绘制一条水平线,如图所示在此输入图像描述

我只是尝试使用matplotlib:

plt.plot([x1, x2], [y1, y2], 'k-', lw = 10)
Run Code Online (Sandbox Code Playgroud)

但是没有显示该行.返回的对象seaborn.clustermap没有像这个类似问题中的任何属性.我该如何绘制线条?

以下是生成类似于我发布的"随机"群集图的代码:

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

data = np.random.random((50, 50))
df = pd.DataFrame(data)
row_colors = ["b" if random.random() > 0.2 else "r"  for i in range (0,50)]
cmap = sns.diverging_palette(133, 10, n=7, as_cmap=True)
result = sns.clustermap(df, row_colors=row_colors, col_cluster = False, cmap=cmap, linewidths = 0)
plt.plot([5, 30], [5, 5], 'k-', lw …
Run Code Online (Sandbox Code Playgroud)

python plot matplotlib pandas seaborn

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

使用 Seaborn 中的值标记水平条形图

我有一个水平条形图,例如,seaborn 文档中示例的简化版本:https ://seaborn.pydata.org/examples/horizo​​ntal_barplot.html

import seaborn as sns
import matplotlib.pyplot as plt

f, ax = plt.subplots(figsize=(6, 15))

crashes = sns.load_dataset("car_crashes").sort_values("total", ascending=False)

sns.barplot(x="total", y="abbrev", data=crashes,
            label="Total", color="b")

ax.set(xlim=(0, 24), ylabel="",
       xlabel="Automobile collisions per billion miles")


plt.show()
Run Code Online (Sandbox Code Playgroud)

如何获得标有每个条形值的条形?

我为垂直条尝试了这种方法(如何在 seaborn 的条上添加百分比?),但它似乎不起作用。将高度更改为宽度不会产生我认为的效果。

for p in ax.patches:
    height = p.get_width()
    ax.text(p.get_y()+p.get_height()/2.,
            height + 3,
            '{:1.2f}'.format(height),
            ha="center")
Run Code Online (Sandbox Code Playgroud)

我假设水平图的工作方式不同?

python matplotlib seaborn

4
推荐指数
2
解决办法
6491
查看次数

如何按类别用百分比注释计数图

您好,我正在尝试向我的 5 个类别和 2 个值(旧的和年轻的)添加百分比countplot。我尝试添加来自 如何在seaborn中的条形顶部添加百分比?

我的代码:

plt.figure(figsize =(7,5))
ax = sb.countplot(data = df_x_1, x = 'concern_virus', hue = 'age')
plt.xticks(size =12)
plt.xlabel('Level of Concern', size = 14)
plt.yticks(size = 12)
plt.ylabel('Number of People', size = 12)
plt.title("Older and Younger People's Concern over the Virus", size = 16)
ax.set_xticklabels(ax.get_xticklabels(), rotation=40, ha="right");

for p in ax.patches:
    percentage = '{:.1f}%'.format(100 * p.get_height()/total)
    x = p.get_x() + p.get_width()
    y = p.get_height()
    ax.annotate(percentage, (x, y),ha='center')
plt.show()
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

正如您所看到的,百分比没有意义。

python matplotlib seaborn plot-annotations countplot

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