Matplotlib柱状图 - plt.bar()、plt.barh()

本文详细介绍了matplotlib库中的plt.bar()和plt.barh()函数,用于绘制柱状图。plt.bar()用于创建竖直柱状图,plt.barh()则创建横向柱状图。文章通过实例展示了如何设置柱状图的各种参数,如颜色、宽度、高度等,并且通过多轴示例展示了在同一图表中绘制多个不同数据系列的方法。此外,还涉及了如何设置刻度、标签、颜色和科学计数法等细节,帮助读者掌握matplotlib柱状图的绘制技巧。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、plt.bar()、plt.barh()参数详解
简介:
plt.bar():正常柱状图📊📊,常见的统计图;
plt.barh():横向的柱状图,可以理解为正常柱状图旋转了90°。

import matplotlib as mpl
import matplotlib.pyplot as plt
from matplotlib.pyplot import MultipleLocator
from matplotlib import ticker
%matplotlib inline


plt.bar(x, height, width=0.8, bottom=None, *, align='center', data=None, **kwargs)

# 横向柱状图barh,简单理解bar旋转90°
plt.barh(y, width, height=0.8, left=None, *, align='center', **kwargs)

常用参数解释:
plt.bar()
x:表示x坐标,数据类型为int或float类型,刻度自适应调整;也可传dataframe的object,x轴上等间距排列;
height:表示柱状图的高度,也就是y坐标值,数据类型为int或float类型;
width:表示柱状图的宽度,取值在0~1之间,默认为0.8;
bottom:柱状图的起始位置,也就是y轴的起始坐标;
align:柱状图的中心位置,默认"center"居中,可设置为"lege"边缘;
color:柱状图颜色;
edgecolor:边框颜色;
linewidth:边框宽度;
tick_label:下标标签;
log:柱状图y周使用科学计算方法,bool类型;
orientation:柱状图是竖直还是水平,竖直:“vertical”,水平条:“horizontal”;

plt.barh()
y:表示y坐标,数据类型为int或float类型,刻度自适应调整;也可传dataframe的object,y轴上等间距排列;
height:表示柱状图的长度,也就是x坐标值,数据类型为int或float类型;
width:表示柱状图的高度,取值在0~1之间,默认为0.8;
其他参数与plt.bar()类似。

plt.bar()综合应用

import matplotlib as mpl
import matplotlib.pyplot as plt
from matplotlib.pyplot import MultipleLocator
from matplotlib import ticker
%matplotlib inline


# 第一个坐标轴和图
fig = plt.figure(figsize=(8,5), dpi=80)
ax = fig.add_subplot(1,1,1)
plt.subplot(1, 1, 1)

# 画多个图,传递多个不同的x轴刻度
x = [i for i in range(25)]  # x轴标准刻度
x1 = [i-0.2 for i in range(25)]  # 第一个图x轴左偏移0.2
x2 = [i+0.2 for i in range(25)]  # 第二个图x周右偏移0.2,防止重叠
xx = data3['sku_pri'].to_list()  # x周的刻度显示

ax.set_ylabel('y轴1的名称')
ax.set_xlabel('x周名字')
plt.bar(x1, data3['num_sales']/10000, width=0.4, label='第一张图')
plt.ylim(0,4000)
plt.xticks(x,xx)  # x周刻度显示
plt.title('plt.plot()综合应用')
ax.legend(loc='upper left')

# 第二个坐标轴和图
ax2 = ax.twinx()
ax2.spines['right'].set_position(('axes', 1.0))
ax2.set_ylabel('y轴2的名称')
plt.bar(x2, data3['lk_num']/10000, width=0.4, color='orange', label='第二张图')
plt.ylim(0,200)
plt.xticks(x,xx)
ax2.legend(loc='upper center')

# 第三个坐标和图
ax3 = ax.twinx()
ax3.spines['right'].set_position(('axes', 1.1))  # 1.1向右便宜避免重叠
ax3.set_ylabel('y轴3的名称')
plt.plot(x, data3['lk_ra'], marker='*',color='purple', label='第三张图')
plt.ylim(0,0.12)

# y轴3设置刻度未百分比
ax3.yaxis.set_major_locator(MultipleLocator(0.02))
ax3.yaxis.set_major_formatter(ticker.PercentFormatter(xmax=1, decimals=0))
plt.xticks(x,xx)

ax3.legend(loc='upper right')

# plt.savefig('保存图片名称'+'.png')
plt.show()

在这里插入图片描述

### 如何使用 `matplotlib` 的 `plt.barh()` 绘制水平柱状图 `matplotlib.pyplot.barh()` 是 Matplotlib 提供的一个函数,专门用于绘制水平方向的条形图。它能够清晰地对比不同类别的数据、展示排名或者进行指标间的比较[^1]。 以下是关于该函数的关键点以及如何使用的详细介绍: #### 函数签名与主要参数说明 ```python import matplotlib.pyplot as plt plt.barh(y, width, height=0.8, color=None, edgecolor=None, label=None, alpha=None) ``` | 参数 | 描述 | |------------|----------------------------------------------------------------------| | `y` | 表示 Y 轴上的类别(通常是字符串列表或其他分类数据)。 | | `width` | 条形的宽度,实际上是水平条形图中的长度,对应于数值型的数据。 | | `height` | 条形的高度,默认值为 0.8,可以自定义调整其厚度。 | | `color` | 设置条形的颜色,支持单个颜色名称(如 `"red"` 或 `"blue"`),也可以传入颜色列表来分别指定每个条形的颜色。 | | `edgecolor`| 定义条形边缘的颜色。 | | `label` | 图例标签,配合 `plt.legend()` 使用以便区分不同的图表部分。 | | `alpha` | 控制透明度,取值范围为 `[0, 1]`,其中 `1` 表示完全不透明。 | --- #### 示例代码:绘制基本水平柱状图 下面是一个简单的例子,演示如何利用 `plt.barh()` 创建一个基础的水平柱状图。 ```python import matplotlib.pyplot as plt # 数据准备 categories = ["Category A", "Category B", "Category C", "Category D"] values = [25, 30, 15, 20] # 绘制水平柱状图 plt.barh(categories, values, color="skyblue", edgecolor="black") # 添加标题和轴标签 plt.title("Basic Horizontal Bar Chart Example") plt.xlabel("Values") plt.ylabel("Categories") # 显示图形 plt.show() ``` 此代码片段会生成一张带有四个水平条形的图表,每一条代表一个类别及其对应的数值[^1]。 --- #### 自定义样式增强可视化效果 通过设置更多选项可以让图表更加美观并突出重点信息。例如改变颜色方案、增加透明度或标注具体数值等操作如下所示: ```python import matplotlib.pyplot as plt # 数据 categories = ['Group X', 'Group Y', 'Group Z'] values = [10, 24, 16] colors = ['#ff9999','#66b3ff','#99ff99'] # 绘制带样式的水平柱状图 bars = plt.barh(categories, values, color=colors, height=0.6, alpha=0.7) # 添加数值标签到每一个条形旁边 for bar in bars: width = bar.get_width() plt.text(width + 0.5, bar.get_y() + bar.get_height()/2, f'{int(width)}', va='center') # 配置布局细节 plt.title('Custom Styled Horizontal Bars') plt.xlabel('Scores') plt.ylabel('Groups') plt.grid(axis='x', linestyle='--', alpha=0.7) # 展现最终图像 plt.tight_layout() plt.show() ``` 在这个扩展版本里,不仅设置了个性化色彩还加入了自动计算位置的文字标记功能,使得读者更容易理解各个组得分情况的同时保持界面整洁有序[^1]。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值