zoukankan      html  css  js  c++  java
  • python 画图

    下载模块

    pip install -i https://pypi.douban.com/simple matplotlib

    1.饼图

    #2.饼图
    from matplotlib import pyplot as plt
    from io import BytesIO
    
    #1.用来正常显示中文标签
    plt.rcParams['font.sans-serif'] = ['SimHei']
    #用来正常显示负号
    plt.rcParams['axes.unicode_minus'] = False
    #2.画出饼图的关键就是定义标签和每一块的颜色
    labels = ['', '', '', ''] #饼图各区域名
    sizes = [15, 30, 45, 50] #饼图各区域数值大小(不是百分比,饼图会自动转换为百分率)
    colors = ['yellowgreen', 'gold', 'lightskyblue', 'lightcoral'] #各区域颜色
    # colors=["r", "y", "g", "b", "c", "m"] #简写
    explode = (0, 0, 0, 0.07) #各区域突出显示
    #3.饼图标题
    plt.title("饼图模型")
    #4.生成饼图
    plt.pie(sizes, explode=explode, labels=labels, colors=colors, autopct="%1.2f%%", shadow=True, startangle=90)
    plt.axis('equal')  #避免比例压缩为椭圆
    plt.legend() #显示各个区域名称汇总
    #5.图片保存
    sio1 = BytesIO()
    plt.show()#显示图片
    # plt.savefig("11.png") #保存图片到本地路径
    # plt.savefig(sio1) #保存图片到内存中
    #6.关闭
    sio1.close()
    plt.close()

     2.折线图

    参考

    :https://blog.csdn.net/AXIMI/article/details/99308004?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522161905958916780357228998%2522%252C%2522scm%2522%253A%252220140713.130102334..%2522%257D&request_id=161905958916780357228998&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~top_positive~default-1-99308004.first_rank_v2_pc_rank_v29&utm_term=python%E6%8A%98%E7%BA%BF%E5%9B%BE

    https://blog.csdn.net/weixin_45492196/article/details/99690698?utm_medium=distribute.pc_feed_404.none-task-blog-2~default~BlogCommendFromMachineLearnPai2~default-1.nonecase&dist_request_id=&depth_1-utm_source=distribute.pc_feed_404.none-task-blog-2~default~BlogCommendFromMachineLearnPai2~default-1.nonecas

    from matplotlib import pyplot as plt
    from io import BytesIO
    
    #1.配置
    #用来正常显示中文标签
    plt.rcParams['font.sans-serif'] = ['SimHei']
    #用来正常显示负号
    plt.rcParams['axes.unicode_minus'] = False
    #设置图表标题,并给坐标轴加上标签
    plt.title("折线图", fontsize=24)
    plt.xlabel("x轴", fontsize=14)
    plt.ylabel("y轴", fontsize=14)
    #设置刻度标记的大小
    plt.tick_params(axis='both', labelsize=14)
    #2.折线图数据
    x_ls = [1, 2, 3, 4, 10] #x轴的值
    y1_ls = [1, 4, 9, 16, 25] #y轴的值
    #3.绘制折线图
    #3.1绘制第一条折线图
    # plot中参数的含义分别是横轴值,纵轴值,线的形状(ro-可以显示每个数字点),颜色,透明度,线的宽度和标签
    plt.plot(x_ls, y1_ls,'o-', alpha=0.8,linewidth=5,label='折线2') #绘制折线
    #加标数据签
    for x, y in zip(x_ls, y1_ls):
        plt.text(x, y+0.3, '%.0f' % y, ha='center', va='bottom', fontsize=10.5)
    #绘制点
    # x_values = [1, 2, 3, 4, 10]
    # y_values = [1, 4, 9, 16, 25]
    # plt.scatter(x_values, y_values, s=100)
    
    #3.2绘制第二条折线
    y2_ls = [2, 6, 8, 10, 13] #y轴的值
    plt.plot(x_ls, y2_ls, 'o-',alpha=0.8,linewidth=5,label='折线2') #绘制折线
    #加标数据签
    for x, y in zip(x_ls, y2_ls):
        plt.text(x, y+0.3, '%.0f' % y, ha='center', va='bottom', fontsize=10.5)
    
    #4.
    plt.legend(loc="best")
    # plt.legend()
    #5.展示保存
    plt.show()
    #6.关闭
    plt.close()

     柱状图

    并列柱状图

    import matplotlib.pyplot as plt
    import numpy as np
    
    #1.这两行代码解决 plt 中文显示的问题
    plt.rcParams['font.sans-serif'] = ['SimHei']
    plt.rcParams['axes.unicode_minus'] = False
    
    #2.输入统计数据
    waters = ('碳酸饮料', '绿茶', '矿泉水', '果汁', '其他') #x轴
    buy_number_male = [6, 7, 6, 1, 2] #y1轴
    buy_number_female = [9, 4, 4, 5, 6] #y2轴
    
    #3.设置坐标
    bar_width = 0.3  # 条形宽度
    index_male = np.arange(len(waters))  # 男生条形图的横坐标 [0 1 2 3 4]
    index_female = index_male + bar_width  # 女生条形图的横坐标 [0.3 1.3 2.3 3.3 4.3]
    
    
    #4.使用两次 bar 函数画出两组条形图
    r1 = plt.bar(index_male, height=buy_number_male, width=bar_width, color='b', label='男性')
    r2 = plt.bar(index_female, height=buy_number_female, width=bar_width, color='g', label='女性')
    
    #柱状图数值
    def autolabel(rects):
        for rect in rects:
            height = rect.get_height()
            plt.text(rect.get_x() + rect.get_width() / 1. - 0.2, 1.01 * height, '%s' % int(height))
    
    autolabel(r1)
    autolabel(r2)
    
    #5.
    plt.legend()  # 显示图例
    plt.xticks(index_male + bar_width/2, waters)  # 让横坐标轴刻度显示 waters 里的饮用水, index_male + bar_width/2 为横坐标轴刻度的位置
    plt.ylabel('购买量')  # 纵坐标轴标题
    plt.title('购买饮用水情况的调查结果')  # 图形标题
    
    #6.显示图片
    plt.show()

    单列柱状图

    import matplotlib.pyplot as plt
    import numpy as np
    
    #单个柱状图
    #1.这两行代码解决 plt 中文显示的问题
    plt.rcParams['font.sans-serif'] = ['SimHei']
    plt.rcParams['axes.unicode_minus'] = False
    #2.x与y轴数据
    waters = ('碳酸饮料', '绿茶', '矿泉水', '果汁', '其他') #x轴
    buy_number = [6, 7, 6, 1, 2] #y轴
    #3.绘制
    rects = plt.bar(waters, buy_number,label='饮料')
    # 在柱状图上显示具体数值, ha参数控制水平对齐方式, va控制垂直对齐方式
    for rect in rects:
        height = rect.get_height()
        plt.text(rect.get_x() + rect.get_width() / 2. - 0.2, 1.009 * height, '%s' % int(height))
    #标题
    plt.title('男性购买饮用水情况的调查结果')
    #4.显示
    plt.legend()
    plt.show()
    #5.关闭
    plt.close()

  • 相关阅读:
    Maven学习总结(12)——eclipse中构建多模块maven项目
    Maven学习总结(11)——Maven Tomcat7自动部署
    Maven学习总结(11)——Maven Tomcat7自动部署
    Json学习总结(1)——Java和JavaScript中使用Json方法大全
    Json学习总结(1)——Java和JavaScript中使用Json方法大全
    Tomcat学习总结(2)——Tomcat使用详解
    Tomcat学习总结(2)——Tomcat使用详解
    Tomcat学习总结(1)——Tomcat入门教程
    Tomcat学习总结(1)——Tomcat入门教程
    【我的物联网成长记6】由浅入深了解NB-IoT
  • 原文地址:https://www.cnblogs.com/tfzz/p/14688705.html
Copyright © 2011-2022 走看看