Python seaborn barplot画图案例
作者:qq_45759229 发布时间:2023-11-07 00:50:55
标签:Python,seaborn,barplot,画图
默认barplot
import seaborn as sns
import matplotlib.pyplot as plt
import numpy as np
sns.set_theme(style="whitegrid")
df = sns.load_dataset("tips")
#默认画条形图
sns.barplot(x="day",y="total_bill",data=df)
plt.show()
#计算平均值看是否和条形图的高度一致
print(df.groupby("day").agg({"total_bill":[np.mean]}))
print(df.groupby("day").agg({"total_bill":[np.std]}))
# 注意这个地方error bar显示并不是标准差
total_bill
mean
day
Thur 17.682742
Fri 17.151579
Sat 20.441379
Sun 21.410000
total_bill
std
day
Thur 7.886170
Fri 8.302660
Sat 9.480419
Sun 8.832122
使用案例
# import libraries
import seaborn as sns
import numpy as np
import matplotlib.pyplot as plt
# load dataset
tips = sns.load_dataset("tips")
# Set the figure size
plt.figure(figsize=(14, 8))
# plot a bar chart
ax = sns.barplot(x="day", y="total_bill", data=tips, estimator=np.mean, ci=85, capsize=.2, color='lightblue')
修改capsize
ax=sns.barplot(x="day",y="total_bill",data=df,capsize=1.0)
plt.show()
显示error bar的值
import seaborn as sns
import matplotlib.pyplot as plt
sns.set_theme(style="whitegrid")
df = sns.load_dataset("tips")
#默认画条形图
ax=sns.barplot(x="day",y="total_bill",data=df)
plt.show()
for p in ax.lines:
width = p.get_linewidth()
xy = p.get_xydata() # 显示error bar的值
print(xy)
print(width)
print(p)
[[ 0. 15.85041935]
[ 0. 19.64465726]]
2.7
Line2D(_line0)
[[ 1. 13.93096053]
[ 1. 21.38463158]]
2.7
Line2D(_line1)
[[ 2. 18.57236207]
[ 2. 22.40351437]]
2.7
Line2D(_line2)
[[ 3. 19.66244737]
[ 3. 23.50109868]]
2.7
Line2D(_line3)
annotata error bar
fig, ax = plt.subplots(figsize=(8, 6))
sns.barplot(x='day', y='total_bill', data=df, capsize=0.2, ax=ax)
# show the mean
for p in ax.patches:
h, w, x = p.get_height(), p.get_width(), p.get_x()
xy = (x + w / 2., h / 2)
text = f'Mean:\n{h:0.2f}'
ax.annotate(text=text, xy=xy, ha='center', va='center')
ax.set(xlabel='day', ylabel='total_bill')
plt.show()
error bar选取sd
import seaborn as sns
import matplotlib.pyplot as plt
sns.set_theme(style="whitegrid")
df = sns.load_dataset("tips")
#默认画条形图
sns.barplot(x="day",y="total_bill",data=df,ci="sd",capsize=1.0)## 注意这个ci参数
plt.show()
print(df.groupby("day").agg({"total_bill":[np.mean]}))
print(df.groupby("day").agg({"total_bill":[np.std]}))
total_bill
mean
day
Thur 17.682742
Fri 17.151579
Sat 20.441379
Sun 21.410000
total_bill
std
day
Thur 7.886170
Fri 8.302660
Sat 9.480419
Sun 8.832122
设置置信区间(68)
import seaborn as sns
import matplotlib.pyplot as plt
sns.set_theme(style="whitegrid")
df = sns.load_dataset("tips")
#默认画条形图
sns.barplot(x="day",y="total_bill",data=df,ci=68,capsize=1.0)## 注意这个ci参数
plt.show()
设置置信区间(95)
import seaborn as sns
import matplotlib.pyplot as plt
sns.set_theme(style="whitegrid")
df = sns.load_dataset("tips")
#默认画条形图
sns.barplot(x="day",y="total_bill",data=df,ci=95)
plt.show()
#计算平均值看是否和条形图的高度一致
print(df.groupby("day").agg({"total_bill":[np.mean]}))
total_bill
mean
day
Thur 17.682742
Fri 17.151579
Sat 20.441379
Sun 21.410000
dataframe aggregate函数使用
#计算平均值看是否和条形图的高度一致
df = sns.load_dataset("tips")
print("="*20)
print(df.groupby("day").agg({"total_bill":[np.mean]})) # 分组求均值
print("="*20)
print(df.groupby("day").agg({"total_bill":[np.std]})) # 分组求标准差
print("="*20)
print(df.groupby("day").agg({"total_bill":"nunique"})) # 这里统计的是不同的数目
print("="*20)
print(df.groupby("day").agg({"total_bill":"count"})) # 这里统计的是每个分组样本的数量
print("="*20)
print(df["day"].value_counts())
print("="*20)
====================
total_bill
mean
day
Thur 17.682742
Fri 17.151579
Sat 20.441379
Sun 21.410000
====================
total_bill
std
day
Thur 7.886170
Fri 8.302660
Sat 9.480419
Sun 8.832122
====================
total_bill
day
Thur 61
Fri 18
Sat 85
Sun 76
====================
total_bill
day
Thur 62
Fri 19
Sat 87
Sun 76
====================
Sat 87
Sun 76
Thur 62
Fri 19
Name: day, dtype: int64
====================
dataframe aggregate 自定义函数
import numpy as np
import pandas as pd
df = pd.DataFrame({'Buy/Sell': [1, 0, 1, 1, 0, 1, 0, 0],
'Trader': ['A', 'A', 'B', 'B', 'B', 'C', 'C', 'C']})
print(df)
def categorize(x):
m = x.mean()
return 1 if m > 0.5 else 0 if m < 0.5 else np.nan
result = df.groupby(['Trader'])['Buy/Sell'].agg([categorize, 'sum', 'count'])
result = result.rename(columns={'categorize' : 'Buy/Sell'})
result
Buy/Sell Trader
0 1 A
1 0 A
2 1 B
3 1 B
4 0 B
5 1 C
6 0 C
7 0 C
dataframe aggregate 自定义函数2
df = sns.load_dataset("tips")
#默认画条形图
def custom1(x):
m = x.mean()
s = x.std()
n = x.count()# 统计个数
#print(n)
return m+1.96*s/np.sqrt(n)
def custom2(x):
m = x.mean()
s = x.std()
n = x.count()# 统计个数
#print(n)
return m+s/np.sqrt(n)
sns.barplot(x="day",y="total_bill",data=df,ci=95)
plt.show()
print(df.groupby("day").agg({"total_bill":[np.std,custom1]})) # 分组求标准差
sns.barplot(x="day",y="total_bill",data=df,ci=68)
plt.show()
print(df.groupby("day").agg({"total_bill":[np.std,custom2]})) #
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-pkCx72ui-1658379974318)(output_24_0.png)]
total_bill
std custom1
day
Thur 7.886170 19.645769
Fri 8.302660 20.884910
Sat 9.480419 22.433538
Sun 8.832122 23.395703
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-GFyIePmW-1658379974318)(output_24_2.png)]
total_bill
std custom2
day
Thur 7.886170 18.684287
Fri 8.302660 19.056340
Sat 9.480419 21.457787
Sun 8.832122 22.423114
seaborn显示网格
ax=sns.barplot(x="day",y="total_bill",data=df,ci=95)
ax.yaxis.grid(True) # Hide the horizontal gridlines
ax.xaxis.grid(True) # Show the vertical gridlines
seaborn设置刻度
fig, ax = plt.subplots(figsize=(10, 8))
sns.barplot(x="day",y="total_bill",data=df,ci=95,ax=ax)
ax.set_yticks([i for i in range(30)])
ax.yaxis.grid(True) # Hide the horizontal gridlines
使用其他estaimator
#estimator 指定条形图高度使用相加的和
sns.barplot(x="day",y="total_bill",data=df,estimator=np.sum)
plt.show()
#计算想加和看是否和条形图的高度一致
print(df.groupby("day").agg({"total_bill":[np.sum]}))
'''
total_bill
sum
day
Fri 325.88
Sat 1778.40
Sun 1627.16
Thur 1096.33
'''
来源:https://blog.csdn.net/qq_45759229/article/details/125905921


猜你喜欢
- pip安装的话,找到自己安装python的路径,在安装路径下会有一个文件夹,比如我的安装路径是c盘我是默认安装路径,在里面有一个python
- 阅读上一篇:[译]Javascript风格要素(一) 我们使用习惯用法可以使我们的意图更加的清晰和简洁。使用==时,当心强制转换考虑下面函数
- python语言本身没有提供const,但实际开发中经常会遇到需要使用const的情形,由于语言本身没有这种支出,因此需要使用一些技巧来实现
- 本节内容:1.前言2.相关概念3.Python中的默认编码4.Python2与Python3中对字符串的支持5.字符编码转换一、前言Pyth
- 我就废话不多说了,直接上代码吧!集成环境:win10 pycharm #!/usr/bin/env python3.5.2# -*- cod
- <body oncontextmenu = "return false"> <body onconte
- 首先打开网站https://www.zymk.cn/1/37988.html打开开发者工具选择XHR标签页,没有找到什么再查看一下这些图片的
- 用ASP实现搜索引擎的功能是一件很方便的事,可是,如何实现类似3721的智能搜索呢?比如,当在搜索条件框内输入“中国人民”时,自动从中提取“
- 一、下载MySQL 访问MySQL的官网http://www.mysql.com/downloads/&
- Nginx配置Ngnix,一个高性能的web服务器,毫无疑问它是当下的宠儿。卓越的性能,灵活可扩展,在服务器领域里攻城拔寨,征战天下。静态文
- 安装sql2000时出现以前的某个程序安装已在安装计算机上创建挂起的文件操作。运行安装程序之前必须重新启动计算机。 安装sql2000是,因
- 本文实例讲述了pytorch制作自己的LMDB数据操作。分享给大家供大家参考,具体如下:前言记录下pytorch里如何使用lmdb的code
- 怎么用javascript进行拖拽本文译自:http://www.webreference.com/programming/javascri
- 之前安装mysql时未做总结,换新电脑,补上安装记录,安装的时候,找了些网友的安装记录,发现好多坑1、mysql-5.7.12-winx64
- 一。首先,添加如下存储过程CREATE PROCEDURE dbo.ChangeObjectOwner @Ol
- 周五下午,作为小白太痛苦了,这两天一直在做一件事,如下:使flask接口中的函数执行的同时,向指定的url传递数据(我甚至不知道怎么描述这个
- 以下是通过Excel 的VBA连接Oracle并操作Oracle相关数据的示例Excel 通过VBA连接数据库需要安装相应的Oracle客户
- 前言正则表达式是文本处理领域中的一个强大的工具,它可以让文本处理的能力呈指数级的提升,如果一款文本编辑器不支持正则表达式,那么它就算不上是一
- Tkinter 是 Python 的标准 GUI 库。Python 使用 Tkinter 可以快速的创建 GUI 应用程序。这篇文章使用tk
- 一、如何理解本条内容:一个“简单”和“复杂”的例子在我和开发人员沟通一个项目需求的时候,他们频频慨叹Mockup的设计所考虑情况之细致,很多