zoukankan      html  css  js  c++  java
  • 数据可视化(数学建模用到的画图)

    01柱状图

    from pylab import *  # 这两行代码,专门用来显示汉子问题
    
    mpl.rcParams['font.sans-serif'] = ['Microsoft YaHei']  # 这两行代码,专门用来显示汉子问题
    
    x1 = np.arange(2004, 2017)
    y1 = [970279, 1259308, 1127571, 1163959, 1169540, 1076938, 991350, 953275, 951508, 904434, 889381, 864015, 836236, ]
    y1 = np.array(y1)
    # y2 = [1435, 3402, 3339, 3669, 2802, 3783, 3000, 2840, 2662, 2576, 2240, 2280, 2465]
    
    plt.figure(1)
    plt.bar(x1, y1 / 10000, 0.6, color="coral")
    plt.title("发病人数与时间的关系")
    plt.xlabel(u"年份")
    plt.ylabel(u"发病人数")
    plt.text(2001.5, 127, "单位:万人")  # 在图表任何位置添加一些注释或者说明
    plt.show()

    02折线图

    # """
    # @author:Zhao
    # @ide:PyCharm
    # @createTime:2019-05-26
    # """
    import numpy as np
    from pylab import *  # 这两行代码,专门用来显示汉子问题
    
    plt.rcParams['font.sans-serif'] = ['Microsoft YaHei']  # 这两行代码,专门用来显示汉子问题
    
    x1 = np.arange(2004, 2017)
    x2 = np.arange(2004, 2020)
    
    y1 = [970279, 1259308, 1127571, 1163959, 1169540, 1076938, 991350, 953275, 951508, 904434, 889381, 864015, 836236, ]
    y1 = np.array(y1)
    y2 = [1041613.1, 1144841.3, 1148142.4, 1155784.4, 1163656.7, 1120077.3, 1049225.1, 992511.8, 965732.8, 931802.3,
          906496.6, 882183.2, 856137.6, 807201.4, 776392.1, 743850.4]
    y2 = np.array(y2)
    y3 = [970280, 1228788, 1187444, 1146911, 1107177, 1068200, 1029999, 992514, 955770, 919738, 884407, 849761, 815788,
          749800, 717800, 686360]
    y3 = np.array(y3)
    
    plt.figure(1)
    
    plt.plot(x1, y1 / 10000, label='实际发病人数', c='r')
    plt.scatter(x1, y1 / 10000, c='r')
    plt.plot(x2, y2 / 10000, label='三次指数平滑预测发病人数')
    plt.scatter(x2, y2 / 10000)
    plt.plot(x2, y3 / 10000, label='灰色模型预测发病人数', c='g')
    plt.scatter(x2, y3 / 10000, c='g')
    plt.title("发病人数与时间的变化趋势")
    plt.xlabel(u"年份")
    plt.ylabel(u"发病人数")
    plt.legend()
    plt.xticks(range(2004, 2021, 2))
    plt.text(2001, 127, "单位:万人")
    
    plt.show()

    03饼状图

    import pandas as pd
    import numpy as np
    from collections import Counter
    from pylab import *  # 这两行代码,专门用来显示汉子问题
    
    mpl.rcParams['font.sans-serif'] = ['Microsoft YaHei']  # 这两行代码,专门用来显示汉子问题
    
    import heapq
    
    
    def plot_pie(x, y):
        colors = 'yellowgreen', 'gold', 'lightskyblue', 'lightcoral', 'red', 'orange', 'blue', 'yellow', 'green',
        explode = 0, 0, 0, 0, 0, 0, 0, 0, 0,
        plt.pie(y, explode=explode, labels=x, colors=colors, autopct='%1.1f%%', shadow=False, startangle=50)
        plt.axis('equal')
        plt.show()
    
    
    if __name__ == '__main__':
        result = [586320., 88228., 50480., 44760., 40888., 32516., 24806., 22952., 47127]
    
        x = '农民', '家务及待业', '工人', '学生', '离退人员', '其他', '民工', '不详', '其余职业'
        plot_pie(x, result)

    04双坐标轴的折线图

    import numpy as np
    import matplotlib.pyplot as plt
    from matplotlib import rc
    
    rc('mathtext', default='regular')
    plt.rcParams['font.sans-serif'] = ['Microsoft YaHei']  # 这两行代码,专门用来显示汉子问题
    guangDong = [5664.37, 9485.99, 16153.25, 24834.65, 31551.37]
    heNan = [5633.24, 9333.4, 15967.61, 24791.83, 32665.38]
    siChuan = [1677.8, 2884.11, 4602.16, 8086.86, 11776.73]
    guangDong = np.array(guangDong)
    heNan = np.array(heNan)
    siChuan = np.array(siChuan)
    guangDongFB = [42883.0, 66049.0, 56753.0, 59090.0, 51157.0]
    heNanFB = [59744.0, 64005.0, 48479.0, 48045.0, 43712.0]
    siChuanFB = [46728.0, 63842.0, 49049.0, 46783.0, 46117.0]
    guangDongFB = np.array(guangDongFB)
    heNanFB = np.array(heNanFB)
    siChuanFB = np.array(siChuanFB)
    x = np.arange(2004, 2017, 3)
    
    fig = plt.figure()
    ax = fig.add_subplot(111)
    ax.plot(x, guangDong / 10000, c='red', label='湖南GDP')
    ax.plot(x, heNan / 10000, c='blue', label='湖北GDP')
    ax.plot(x, siChuan / 10000, c='orange', label='贵州GDP')
    ax2 = ax.twinx()
    ax2.plot(x, guangDongFB / 10000, '--', c="red", label='湖南发病人数')
    ax2.plot(x, heNanFB / 10000, '--', c="blue", label='湖北发病人数')
    ax2.plot(x, siChuanFB / 10000, '--', c="orange", label='贵州发病人数')
    ax.legend(loc=0)
    ax.grid()
    ax.set_xlabel("时间")
    ax.set_ylabel("GDP")
    ax2.set_ylabel("发病人数")
    # ax.set_ylim(-20, 100)
    ax2.legend(loc=0)
    # plt.savefig('0.png')
    plt.text(2001.5, 6.65, "单位:万亿元")
    plt.text(2016.6, 6.65, "单位:万人")
    plt.show()

  • 相关阅读:
    jQuery--.wrap()方法
    ECharts学习(4)--仪表盘
    ECharts学习(3)--toolbox(工具栏)
    jQuery之核心API
    STM32片上Flash内存映射、页面大小、寄存器映射
    typedef struct bit0 : 1
    ***WARNING L15: MULTIPLE CALL TO SEGMENT
    C/C++ 打印文件名、行号、函数名的方法
    ISP与IAP的区别
    sprintf函数 %6.2f
  • 原文地址:https://www.cnblogs.com/xinmomoyan/p/10936518.html
Copyright © 2011-2022 走看看