【基础绘图】03.堆叠柱状图

效果图:

主要步骤:

1. 数据准备:随机生成数组

2. 图像绘制:绘制堆叠柱状图(对bottom的控制就可以啦)

详细代码:着急的直接拖到最后有完整代码

步骤一:导入库包及图片存储路径并设置中文字体为宋体,西文为新罗马(没有的库包要先下好奥)

###############################################################################
# 导入库及文件
import numpy as np
import matplotlib.pyplot as plt
from matplotlib import rcParams
# 设置西文字体为新罗马字体,中文宋体
config = {
            "font.family": 'serif',
            "font.size": 12,
            "mathtext.fontset": 'stix',
            "font.serif": ['SimSun'],
         }
rcParams.update(config)
rcParams['axes.unicode_minus']=False

步骤二:生成随机数组

###############################################################################
figpath = r'H:/00.csdn/02fig/'
x = np.arange(1, 13)
y = np.random.randint(1, 5, size=(12, 5))

步骤三:绘制主图,这里对横坐标的刻度标签(month),柱的宽度(width),以及图例的列数(ncol)进行了控制

###############################################################################
month = ['JAN', 'FEB', 'MAR', 'APR', 'MAY','JUN', 'JUL', 'AUG', 'SEP', 'OCT', 'NOV', 'DEC']
year = ['2021', '2022', '2023', '2024', '2025']
colors = ['#E9BAA4', '#89BDCC', '#7B86A3', '#B6D8CB', '#AD9A85', 
          '#AEB3C6', '#D57F70', '#89BDCC', '#64AA9A']
width = 0.4
bottom = np.zeros(12)

fig = plt.figure(figsize=(15, 8))
ax = fig.add_axes([0.1, 0.25, 0.6, 0.4])

for i in range(0, 5):
    ax.bar(x, y[:, i], width, align='center', label=year[i], color=colors[i], bottom=bottom)
    bottom += y[:, i]
    

ax.set( xlim=(0, 13), xticks=x, xticklabels=month, xlabel = 'x轴',
        ylabel = 'y轴',
        title='图名')

ax.legend(frameon=False, ncol=5)

步骤四:保存图片

###############################################################################
plt.savefig(figpath+'03 堆叠柱状图', dpi=600, bbox_inches = 'tight')
plt.show()

完整代码在这里:

###############################################################################
# 导入库及文件
import numpy as np
import matplotlib.pyplot as plt
from matplotlib import rcParams
# 设置西文字体为新罗马字体,中文宋体
config = {
            "font.family": 'serif',
            "font.size": 12,
            "mathtext.fontset": 'stix',
            "font.serif": ['SimSun'],
         }
rcParams.update(config)
rcParams['axes.unicode_minus']=False
###############################################################################
figpath = r'H:/00.csdn/02fig/'
x = np.arange(1, 13)
y = np.random.randint(1, 5, size=(12, 5))
###############################################################################
month = ['JAN', 'FEB', 'MAR', 'APR', 'MAY','JUN', 'JUL', 'AUG', 'SEP', 'OCT', 'NOV', 'DEC']
year = ['2021', '2022', '2023', '2024', '2025']
colors = ['#E9BAA4', '#89BDCC', '#7B86A3', '#B6D8CB', '#AD9A85', 
          '#AEB3C6', '#D57F70', '#89BDCC', '#64AA9A']

width = 0.4
bottom = np.zeros(12)

fig = plt.figure(figsize=(15, 8))
ax = fig.add_axes([0.1, 0.25, 0.6, 0.4])

for i in range(0, 5):
    ax.bar(x, y[:, i], width, align='center', label=year[i], color=colors[i], bottom=bottom)
    bottom += y[:, i]
    

ax.set( xlim=(0, 13), xticks=x, xticklabels=month, xlabel = 'x轴',
        ylabel = 'y轴',
        title='图名')

ax.legend(frameon=False, ncol=5)
###############################################################################
plt.savefig(figpath+'03 堆叠柱状图', dpi=600, bbox_inches = 'tight')
plt.show()

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值