• 数据可视化(数学建模用到的画图)


    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()

  • 相关阅读:
    English 2
    速算24点
    心理学1
    从微服务到函数式编程
    034 01 Android 零基础入门 01 Java基础语法 04 Java流程控制之选择结构 01 流程控制概述
    033 01 Android 零基础入门 01 Java基础语法 03 Java运算符 13 运算符和表达式知识点总结
    032 01 Android 零基础入门 01 Java基础语法 03 Java运算符 12 运算符和if-else条件语句的综合案例——闰年问题
    031 01 Android 零基础入门 01 Java基础语法 03 Java运算符 11 运算符的优先级
    030 01 Android 零基础入门 01 Java基础语法 03 Java运算符 10 条件运算符
    029 01 Android 零基础入门 01 Java基础语法 03 Java运算符 09 逻辑“非”运算符
  • 原文地址:https://www.cnblogs.com/xinmomoyan/p/10936518.html
Copyright © 2020-2023  润新知