matplotlib.pyplot.barh()函数
条形图或条形图是一种表示数据类别的图形,其矩形条形图的长度和高度与所表示的值成比例。条形图可以横着画也可以竖着画。条形图描述了离散类别之间的比较。图的一个轴表示正在进行比较的特定类别,而另一个轴表示与这些类别对应的测量值。
创建一个水平条形图
Python中的matplotlib API提供了barh()函数,可以在MATLAB风格中使用或作为一个面向对象的API。与轴一起使用的barh()函数的语法如下
语法:matplotlib.pyplot.barh(y, width, height=0.8, left=None, *, align= ‘ center ‘, **kwargs)
下面描述了上面函数的一些位置参数和可选参数:
参数 | 描述 |
---|---|
Y | Y轴的坐标。 |
宽度 | 标量或数组之类的,表示条的宽度。 |
高度 | 标量或数组之类的,表示条的高度(默认值为0.8)。 |
左 | 标量或标量序列,表示条左侧的X坐标(默认值为0)。 |
对齐 | {‘ center ‘, ‘ edge ‘}对齐Y坐标的基底(默认值为center)。 |
颜色 | 标量或数组之类的表示条的颜色。 |
edgecolor | 标量或数组之类的,表示条的边缘颜色。 |
线宽 | 标量或数组之类的,表示条边的宽度。 |
tick_label | 标量或数组之类的,表示条的刻度标签(默认值为None)。 |
该函数根据给定参数创建一个以矩形为边界的水平条形图。下面是一个使用barh()方法创建单杠图的简单示例,该图表示参加一个学院不同课程的学生人数。
示例1
import numpy as np
import matplotlib.pyplot as plt
# creating the dataset
data = {'C': 20, 'C++': 15, 'Java': 30,
'Python': 35}
courses = list(data.keys())
values = list(data.values())
fig = plt.figure(figsize=(10, 5))
# creating the bar plot
plt.barh(courses, values, color='maroon')
plt.xlabel("Courses offered")
plt.ylabel("No. of students enrolled")
plt.title("Students enrolled in different courses")
plt.show()
输出:
这里使用plt.barh(courses, values, color= ‘ maroon ‘)来指定使用球场列作为y轴,使用值作为x轴来绘制柱状图。color属性用于设置条形图的颜色(本例中为栗色).plt.xlabel(” Courses offered “), plt.ylabel(” students注册”)用于标记相应的轴。.plt.title()用于为图形创建标题。.plt.show()用于使用前面的命令将图形显示为输出。
示例2
import pandas as pd
from matplotlib import pyplot as plt
# Read CSV into pandas
data = pd.read_csv(r"Downloads/cars1.csv")
data.head()
df = pd.DataFrame(data)
name = df['car'].head(12)
price = df['price'].head(12)
# Figure Size
fig, ax = plt.subplots(figsize=(16, 9))
# Horizontal Bar Plot
ax.barh(name, price)
# Remove axes splines
for s in ['top', 'bottom', 'left', 'right']:
ax.spines[s].set_visible(False)
# Remove x, y Ticks
ax.xaxis.set_ticks_position('none')
ax.yaxis.set_ticks_position('none')
# Add padding between axes and labels
ax.xaxis.set_tick_params(pad=5)
ax.yaxis.set_tick_params(pad=10)
# Add x, y gridlines
ax.grid(b=True, color='grey',
linestyle='-.', linewidth=0.5,
alpha=0.2)
# Show top values
ax.invert_yaxis()
# Add annotation to bars
for i in ax.patches:
plt.text(i.get_width()+0.2, i.get_y()+0.5,
str(round((i.get_width()), 2)),
fontsize=10, fontweight='bold',
color='grey')
# Add Plot Title
ax.set_title('Sports car and their price in crore',
loc='left', )
# Add Text watermark
fig.text(0.9, 0.15, 'Jeeteshgavande30', fontsize=12,
color='grey', ha='right', va='bottom',
alpha=0.7)
# Show Plot
plt.show()
输出: