• python绘制图形


        python能快速解决日常工作中的小任务,比如数据展示。

      python做数据展示,主要用到matplotlib库,使用简单的代码,就可以很方便的绘制折线图、柱状图等。使用Java等,可能还需要配合html来进行展示,十分繁琐。

    绘制的图形举例如下:

         

     各种平面图的绘制代码:

     1 '''
     2 File Name:   draw
     3 Author:      tim
     4 Date:        2018/8/15 16:47
     5 Description: 图形绘制。十分有用,对于工作中实验性的项目,可以快速展示效果。如果使用java,还需要配合前端展示。
     6 '''
     7 
     8 import matplotlib.pyplot as plt
     9 import numpy as np  # 模块取别名
    10 
    11 
    12 # 直方图
    13 def draw_hist():
    14     mu = 100
    15     sigma = 20
    16 
    17     x = mu + sigma * np.random.randn(20000)  # 样本数量
    18     plt.hist(x, bins=100, color='green', normed=True)  # bins:显示有几个直方,normed是否对数据进行标准化
    19 
    20     plt._show()
    21 
    22 
    23 # 条形图
    24 def draw_bar():
    25     y = [20, 10, 30, 25, 15]  # Y轴数据
    26     index = np.arange(5)  # X轴数据,也可以是index = [0,5]
    27 
    28     plt.bar(left=index, height=y, color='blue', width=0.5)
    29     plt.show()
    30 
    31 
    32 # 折线图
    33 def draw_plot():
    34     x = np.linspace(-10, 10, 100)  # -10到10,100个点
    35     y = x ** 3  # x的3次幂
    36 
    37     plt.plot(x, y, linestyle='--', color='orange', marker='<')
    38     plt.xlabel('X')
    39     plt.ylabel('Y')
    40 
    41     plt.show()
    42 
    43 
    44 # 散点图
    45 def draw_scatter():
    46     x = np.random.randn(1000)
    47     y = x + np.random.randn(1000) * 0.5
    48 
    49     plt.scatter(x, y, s=5, marker='<')  # s表示面积,marker表示图形
    50     plt.show()
    51 
    52 
    53 # 饼状图
    54 def draw_pie():
    55     labels = 'A', 'B', 'C', 'D'  # 4个模块
    56     fracs = [15, 30, 45, 10]  # 每个模块占比例
    57 
    58     plt.axes(aspect=1)  # 使x、y轴比例相同
    59     explode = [0, 0.5, 0, 0]  # 突出某一部分区域
    60 
    61     plt.pie(x=fracs, labels=labels, autopct='%.0f%%', explode=explode)  # autopct显示百分比
    62     plt.show()
    63 
    64 
    65 # 带图例
    66 def draw_with_legend():
    67     x = np.arange(1, 11, 1)  # x轴坐标,1开始,11结束,步长为1
    68 
    69     plt.plot(x, x * 2)  # 第一条线,x,y坐标
    70     plt.plot(x, x * 3)
    71     plt.plot(x, x * 4)
    72 
    73     plt.legend(['Normal', 'Fast', 'Faster'])  # 设置图例,与上面的线对应
    74     plt.grid(True, color='green', linestyle='--', linewidth=1)  # 绘制网格
    75 
    76     plt.show()
    77 
    78 
    79 # start
    80 if __name__ == '__main__':
    81     # draw_hist()
    82     # draw_bar()
    83     draw_plot()
    84     # draw_scatter()
    85     # draw_pie()
    86     # draw_with_legend()

    3D图的绘制代码:

     1 '''
     2 File Name:   draw_3d
     3 Author:      tim
     4 Date:        2018/8/15 18:42
     5 Description: 3D绘图
     6 '''
     7 
     8 import numpy as np
     9 import matplotlib.pyplot as plt
    10 from mpl_toolkits.mplot3d import Axes3D
    11 
    12 
    13 # 3D 绘制
    14 def draw_3D():
    15     fig = plt.figure()  # 定义一个窗口
    16     ax = Axes3D(fig)  # 绘制3D坐标
    17 
    18     # 设置x、y、z的值
    19     x = np.arange(-4, 4, 0.25)
    20     y = np.arange(-4, 4, 0.25)
    21     x, y = np.meshgrid(x, y)  # x-y 平面的网格
    22 
    23     r = np.sqrt(x ** 2 + y ** 2)
    24     z = np.sin(r)  # z值
    25 
    26     # 做出一个三维曲面,并将一个 colormap rainbow 填充颜色,之后将三维图像投影到 XY 平面上做一个等高线图
    27     # rstride 和 cstride 分别代表 row 和 column 的跨度。
    28     ax.plot_surface(x, y, z, rstride=1, cstride=1, cmap=plt.get_cmap('rainbow'))
    29 
    30     # 添加 XY 平面的等高线
    31     ax.contourf(x, y, z, zdir='z', offset=-2, cmap=plt.get_cmap('rainbow'))
    32 
    33     ax.set_zlim(-2, 2)
    34     plt.show()  # 展示
    35 
    36 
    37 # start
    38 if __name__ == '__main__':
    39     draw_3D()
  • 相关阅读:
    DDOS攻击与防御
    .NET Core 二维码生成Demo
    腾讯云服务器远程登录卡顿严重导致无法登录解决办法
    signalR【一、官方案例】
    Python题目:生成100个随机不重复的字符串【杭州多测师】【杭州多测师_王sir】
    把字符串当中重复的字符打印出来【杭州多测师】【杭州多测师_王sir】
    PC#1 ping PC#2,请描述PC1和PC2之间的通信过程【杭州多测师】【杭州多测师_王sir】
    逻辑题【杭州多测师】【杭州多测师_王sir】
    编程题:给一个网址获取分配网址的协议,域名,路径,端口,参数1的值,参数2的值,并以字典的形式打印出结果【杭州多测师】【杭州多测师_王sir】
    经典的Python题目之找到a开头的元素、组成新的列表【多测师王sir】【杭州多测师_王sir】
  • 原文地址:https://www.cnblogs.com/leanfish/p/9483664.html
Copyright © 2020-2023  润新知