python - Seaborn/Matplotlib:在水平条形图上绘制过滤数据
问题描述
我想使用我选择的数据绘制水平条形图。
average_nightly_prices = df.groupby('neighbourhood_cleansed')['price'].mean()
average_nightly_prices
数据:
neighbourhood_cleansed
Bijlmer-Centrum 95.018868
Bijlmer-Oost 100.268041
Bos en Lommer 124.242481
Buitenveldert - Zuidas 148.633065
Centrum-Oost 174.449275
Centrum-West 181.870728
De Aker - Nieuw Sloten 137.437500
De Baarsjes - Oud-West 148.323816
De Pijp - Rivierenbuurt 163.523210
Gaasperdam - Driemond 106.714286
Geuzenveld - Slotermeer 122.605634
IJburg - Zeeburgereiland 173.202273
Noord-Oost 128.538462
Noord-West 128.862069
Oostelijk Havengebied - Indische Buurt 130.387133
Osdorp 109.222222
Oud-Noord 161.260135
Oud-Oost 145.832629
Slotervaart 119.940048
Watergraafsmeer 150.214815
Westerpark 148.807720
Zuid 175.561469
Name: price, dtype: float64
我需要帮助才能开始,所以我可以稍后添加一些细节,例如错误栏。
我已经详细浏览了文档,但最让我困惑的是将数据分配给轴。
问题:当将数据绘制到 x,y 轴时,我可以在那里实现数据过滤器吗?详细说明:
sns.barplot(x= df.groupby('neighbourhood_cleansed')....etc
解决方案
绘制简单的barplot
使用。
import seaborn as sns
import matplotlib.pyplot as plt
ax = sns.barplot(x=average_nightly_prices.index, y=average_nightly_prices.values)
进一步定制:
脚步
- 设置
figsize
和要求dpi
: - 旋转
x-ticks
90 度。 x-label
缩放和的字体大小ticks
- 在条形图顶部添加值文本
import seaborn as sns
import matplotlib.pyplot as plt
plt.figure(figsize=(35, 20), dpi=100)
ax = sns.barplot(x=average_nightly_prices.index, y=average_nightly_prices.values)
plt.xticks(rotation=90)
plt.xlabel('neighbourhood_cleansed', fontsize=20)
ax.tick_params(labelsize=15)
for p in ax.patches:
height = p.get_height()
ax.text(p.get_x()+p.get_width()/2., height + 3, height, ha="center")
输出:
笔记:
horizontal
要反向绘制x&y
:
ax = sns.barplot(x = average_nightly_prices.values , y = average_nightly_prices.index)
horizontal
情节上的同类定制:
import seaborn as sns
import matplotlib.pyplot as plt
sns.set_style('darkgrid')
plt.figure(figsize=(35, 20), dpi=100)
ax = sns.barplot(x=average_nightly_prices.values, y=average_nightly_prices.index, palette="Set2")
plt.ylabel('neighbourhood_cleansed', fontsize=20)
ax.tick_params(labelsize=15)
for p in ax.patches:
width = p.get_width()
ax.text(width + 4, p.get_y()+p.get_height()/2., width, ha="center")
最终输出
推荐阅读
- daml - 在 DAML 中可以使用什么来代替 Either?
- javascript - 添加新的
- 元素成
- 问题
- 元素成
- spring - 如何在 Spring Boot 项目中创建 docker 镜像
- javascript - 在signle测试中处理多个浏览器实例时如何设置ignoreSynchronization
- python - pyhon中selenium的send_keys不起作用
- javascript - p:commandLink window.onload
- c# - 为什么传递变量失败,错误值类型“字符串”无法转换为“字符串()”?
- php - 如何根据重音区分确切的字符?
- ipfs - 如何区分“ipfs object links”“ipfs object stat”?我的意思是文件的大小
- python - 如何防止自动toctree条目编号?