Python matplotlip 柱状图 标签 图例





一、参数解释

plt.style.use('ggplot') 表示模拟 ggplot2 的风格。
plt.figure() 先创建一个基础图。

fig.add_subplot(1,1,1) 然后创建一个子图(或多个子图),在子图上操作,1,1,1 表示创建一行一列的子图,并在第一个(此时也是唯一一个)子图上操作。

align='center' 条形与标签中间对齐。
color='darkblue' 设置条形的颜色

ax1.xaxis.set_ticks_position('bottom') 刻度线只显示在 x 轴 底部。
ax1.yaxis.set_ticks_position('left') 刻度线只显示在 y 轴 右侧。

ax1.set_xticks(customers_index) 设置 X轴刻度。
ax1.set_xticklabels(customers) # 设置 X轴刻度标签。

ax1.set_xlabel('Customer Name', fontsize = 14) 设置 X轴标签。

ax1.xaxis.set_tick_params(labelrotation = 45, labelsize = 12) labelrotation =45 标签旋转45°,labelsize 标签字体。

ax1.legend() 显示图例

plt.savefig('bar_plot.png', dpi=400, bbox_inches='tight') 将图片保存在当前文件夹下,并设置文件名;dpi 设置图片分辨率;bbox_inches 保存图片时去掉四周的空白部分。


二、单类数据条形图

Python matplotlip 柱状图 标签 图例_第1张图片


可直接执行代码



import matplotlib.pyplot as plt

# 可以使用这个库的颜色
plt.style.use('ggplot')

customers = ['ABC', 'DEF', 'GHI', 'JKL', 'MNO']
customers_index = range(len(customers))
sale_amounts = [127, 90, 201, 111, 232]

# 创建一个基础图
fig = plt.figure()
# 创建 1*1一个子图,然后在 第一个子图上操作。(可以是 2*2 多个) 
ax1 = fig.add_subplot(1,1,1)

ax1.bar(customers_index, sale_amounts, align='center', color='#F8766D')
ax1.xaxis.set_ticks_position('bottom')
ax1.yaxis.set_ticks_position('left')
# 修改 x 
plt.xticks(customers_index, customers, rotation=0, fontsize='small')
# 设置标签 标题等
plt.xlabel('Customer Name')
plt.ylabel('Sale Amount')
plt.title('Sale Amount per Customer')
# 保存
plt.savefig('bar_plot.png', dpi=400, bbox_inches='tight')
plt.show()





三、多类数据条形图

Python matplotlip 柱状图 标签 图例_第2张图片


可直接执行代码


import matplotlib.pyplot as plt
import numpy as np

plt.style.use('ggplot')

# 设置matplotlib正常显示中文和负号
plt.rcParams['font.sans-serif']=['SimHei']   # 用黑体显示中文
plt.rcParams['axes.unicode_minus']=False     # 正常显示负号

# x轴刻度标签序列
customers = ['ABC', 'DEF', 'GHI', 'JKL', 'MNO']
# x轴刻度
customers_index = np.arange(len(customers))

sale_amounts = [127, 90, 201, 111, 232]
sale_amounts2 = [47, 30, 91, 301, 132]
sale_amounts3 = [87, 120, 41, 31, 332]

# 创建一个基础图 设置画布的大小
fig = plt.figure(figsize=(12,8))
# 创建一个子图,然后在子图上操作
ax1 = fig.add_subplot(1,1,1)

# 多次调用bar()函数即可在同一子图中绘制多组柱形图。
# 为了防止柱子重叠,每个柱子在x轴上的位置需要依次递增 0.3,如果柱子紧挨,这个距离即柱子宽度。
width = 0.3
rects1 = ax1.bar(customers_index - width, sale_amounts, width=width ,align='center', color='#F8766D',label='1号商品')
rects2 = ax1.bar(customers_index , sale_amounts2, width=width ,align='center', color='#B79F00',label='2号商品')
rects3 = ax1.bar(customers_index + width, sale_amounts3, width=width ,align='center', color='#00BA38',label='3号商品')

# 显示柱子值 fontsize 设置字体大小
ax1.bar_label(rects1,padding=3,**{'fontsize': 14})
ax1.bar_label(rects2,padding=3)
ax1.bar_label(rects3,padding=3)

# 刻度线只显示在 x 轴 底部。
ax1.xaxis.set_ticks_position('bottom')
# 刻度线只显示在 y 轴 右侧。
ax1.yaxis.set_ticks_position('left')

# 设置 X轴刻度
ax1.set_xticks(customers_index)
# 设置 X轴刻度标签
ax1.set_xticklabels(customers)
# 设置 X 轴标签 倾斜45°,字体大小
ax1.xaxis.set_tick_params(labelrotation = 45, labelsize = 12)
# 设置 X轴标签
ax1.set_xlabel('Customer Name', fontsize = 14)

# Y 轴
ax1.yaxis.set_tick_params(which = "both", labelsize = 10)
ax1.set_ylabel('Sale Amount')

# 显示label 里面设置的图例
ax1.legend(title = "类别",
         fontsize = 16,
         title_fontsize = 15,
         bbox_to_anchor = (1.01, 0.7))

# 保存
plt.savefig('bar_plot.png', dpi=400, bbox_inches='tight')
plt.show()





你可能感兴趣的:(python,数据可视化,python,matplotlib,开发语言)