ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

Python简单使用matplotlib绘制柱形图

2020-01-15 19:00:50  阅读:310  来源: 互联网

标签:plt title Python list 0.4 matplotlib label 柱形图 data


Python简单使用matplotlib绘制柱形图

from matplotlib import pyplot as plt


def plot(title, data_list=[], x_label=(), y_label=()):
    """
    绘制柱形图
    :param str title: 图片标题
    :param list data_list: 数据列表
    :param tuple x_label: (X轴标签,X轴刻度标签)
    :param tuple y_label:(Y轴标签,Y轴刻度标签)
    :return:
    """
    # 处理中文乱码
    plt.rcParams['font.sans-serif'] = ['Microsoft YaHei']
    plt.rcParams['axes.unicode_minus'] = False

    item_range = range(len(data_list[0]))  # 计算所有数据的长度
    plt.title(title)  # 添加标题

    # 绘X轴刻度的第一个柱形图(宽度0.4)
    plt.bar(item_range, data_list[0], align='center',
            alpha=0.8, width=0.4)
    # 向右移动0.4 绘X轴刻度的第二个柱形图(宽度0.4)
    plt.bar([i+0.4 for i in item_range], data_list[1], align='center',
            color='y', alpha=0.8, width=0.4)

    plt.xlabel(x_label[0])  # 添加X轴标签
    plt.xticks([i+0.2 for i in item_range], x_label[1])  # 添加X轴刻度标签(向右移动0.2居中摆放)

    plt.ylabel(y_label[0])  # 添加Y轴标签
    plt.ylim(y_label[1])  # 设置Y轴的刻度范围

    # 为X轴刻度的第一个柱形图加数值标签
    for x, y in enumerate(data_list[0]):
        plt.text(x, y+10, '%s' % round(y, 1), ha='center')
    # 向右移动0.4 为X轴刻度的第二个柱形图添加数值标签
    for x, y in enumerate(data_list[1]):
        plt.text(x+0.4, y+10, '%s' % round(y, 1), ha='center')

    plt.show()  # 显示图形
    # plt.savefig('./example.jpg')  # 保存图片


if __name__ == '__main__':
    city_title = '四个直辖市GDP大比拼'
    data = [[100, 300, 500, 700], [200, 400, 600, 800]]
    x_label_tuple = ('城市分布', ['北京市', '上海市', '天津市', '重庆市'])
    y_label_tuple = ('GDP', [50, 1000])
    plot(title=city_title, data_list=data, x_label=x_label_tuple, y_label=y_label_tuple)

执行结果:
plot

皮皮鱼哟 发布了25 篇原创文章 · 获赞 10 · 访问量 337 私信 关注

标签:plt,title,Python,list,0.4,matplotlib,label,柱形图,data
来源: https://blog.csdn.net/weixin_43750377/article/details/103994484

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有