• Python绘制各种图形(模板)


    目录

    2D绘图

    折线图 

    条形图

    直方图

    散点图

    饼图

    堆积条形图

    ​编辑

    对称条形图

    3D绘图

    3D散点图

    3D条形图 

    附录:

    颜色表color=' '

    图标marker=" "

    固定代码模版


    2D绘图

    折线图 

    1. import matplotlib.pyplot as plt
    2. #上一行代码也可替换为 import pylab as plt
    3. x = [1,2,3] #各个点的横纵坐标
    4. y = [5,7,4]
    5. x2 = [1,2,3]
    6. y2 = [10,14,12]
    7. plt.plot(x, y, label='First Line') #对应的哪几个参数是一条直线
    8. plt.plot(x2, y2, label='Second Line') #label=' '对应的直线名为什么
    9. plt.xlabel('Plot Number') #xlabel 横坐标的含义,ylabel同理
    10. plt.ylabel('Important var')
    11. plt.grid(linestyle = "--") #设置背景网格线为虚线
    12. plt.title('Interesting Graph\nCheck it out') #表格标题
    13. plt.legend() #生成默认图例
    14. plt.show() #生成图像

    运行代码即可生成图片 

    条形图

    1. import pylab as plt
    2. plt.bar([1,3,5,7,9],[5,2,7,8,2], label="Example one",color='navy') #生成的数据,标签名,颜色
    3. plt.bar([2,4,6,8,10],[8,6,2,5,6], label="Example two", color='g')
    4. plt.legend() #生成图例
    5. plt.xlabel('bar number') #生成坐标标签
    6. plt.ylabel('bar height')
    7. plt.title('Epic Graph\nAnother Line! Whoa') #生成表格标题
    8. plt.show()

     你可以在任何类型的绘图中使用颜色,例如g为绿色,b为蓝色,r为红色,等等。具体颜色代码请见附录

    直方图

    1. import matplotlib.pyplot as plt
    2. plt.rc('font', family='Simhei') #涉及到中文图示,需要加上此句
    3. population_ages = [22,55,62,45,21,22,34,42,42,4,99,102,110,120,121,122,130,111,115,112,80,75,65,54,44,43,42,48]
    4. #每个点的数值
    5. bins = [0,10,20,30,40,50,60,70,80,90,100,110,120,130] #对应的横坐标间距
    6. plt.hist(population_ages, bins, histtype='bar', rwidth=0.8) #直方图矩形宽度设置
    7. plt.xlabel('x')
    8. plt.ylabel('y')
    9. plt.title('图像标题名')
    10. plt.legend() #生成图示
    11. plt.show()

    对于plt.hist函数,你首先需要放入所有的值,然后指定放入哪个桶或容器。                               在我们的例子中,我们绘制了一堆年龄,并希望以 10 年的增量来显示它们。 我们将条形的宽度设为 0.8,但是如果你想让条形变宽,或者变窄,你可以选择其他的宽度。

    散点图

    1. import pylab as plt
    2. x = [1,2,3,4,5,6,7,8]
    3. y = [5,2,4,2,1,4,5,2] #x和y对应多个点的坐标
    4. plt.scatter(x,y, label='skitscat', color='b', s=25, marker="o") #label标签名,color散点颜色,s表示点的大小(数值越大,点越大)
    5. plt.xlabel('x')
    6. plt.ylabel('y')
    7. plt.title('Interesting Graph\nCheck it out')
    8. plt.legend()
    9. plt.show()

    饼图

    1. import matplotlib.pyplot as plt
    2. plt.rc('font', family='Simhei')
    3. slices = [7,2,2,13] #各个图形占总体的比重,例如 7/(7+2+2+13)=29.2%
    4. activities = ['sleeping','eating','working','playing'] #各个扇形标签
    5. cols = ['c','m','r','b'] #图像颜色
    6. plt.pie(slices,
    7. labels=activities,
    8. colors=cols,
    9. startangle=90,
    10. shadow= True,
    11. explode=(0,0.1,0,0),
    12. autopct='%1.1f%%')
    13. plt.title('图像标题')
    14. plt.show()

    plt.pie中:

    1. 首先我们需要指定『切片』,这是每个部分的相对大小。
    2. 然后,我们指定相应切片的颜色列表。
    3. 接下来,我们可以选择指定图形的『起始角度』。 这使你可以在任何地方开始绘图。 在我们的例子中,我们为饼图选择了 90 度角,这意味着第一个部分是一个竖直线条。
    4. 接下来,我们可以选择给绘图添加一个字符大小的阴影,然后我们甚至可以使用explode拉出一个切片。

    我们总共有四个切片,所以对于explode,如果我们不想拉出任何切片,我们传入0,0,0,0。 如果我们想要拉出第一个切片,我们传入0.1,0,0,0。数值越大,这个切片被拉出的距离就越大。

    explode=(0,0.1,0,0),

     

    explode=(0,0.9,0,0),

     

     被拉出的距离0.9和0.1的差距很明显,当数值到1时,该扇形就被完全拉出圆。

          5.最后,我们使用autopct,选择将百分比放置到图表上面。

    堆积条形图

    通过使用 plt.bar() 函数中的可选参数,可以绘制堆积条形图,plt.bar() 函数的可选参数 bottom 允许指定条形图的起始值。

    1. import matplotlib.pyplot as plt
    2. y_1 = [3., 25., 45., 22.]
    3. y_2 = [6., 25., 50., 25.]
    4. x = range(4)
    5. plt.bar(x, y_1, color = 'b')
    6. plt.bar(x, y_2, color = 'r', bottom = y_1)
    7. plt.show()

     可以结合 for 循环,利用延迟呈现机制可以堆叠更多的条形:

    1. import numpy as np
    2. import matplotlib.pyplot as plt
    3. data = np.array([[5., 30., 45., 22.], [5., 25., 50., 20.], [1., 2., 1., 1.]])
    4. x = np.arange(data.shape[1])
    5. for i in range(data.shape[0]):
    6. plt.bar(x, data[i], bottom = np.sum(data[:i], axis = 0))
    7. plt.show()

    对称条形图

    例如,当我们想要绘制不同年龄段的男性与女性数量的对比时,一个简单且有用的技巧是对称绘制两个条形图:

    1. import numpy as np
    2. import matplotlib.pyplot as plt
    3. w_pop = np.array([5., 30., 45., 22.])
    4. m_pop = np.array( [5., 25., 50., 20.])
    5. x = np.arange(4)
    6. plt.barh(x, w_pop)
    7. plt.barh(x, -m_pop)
    8. plt.show()

     图中女性人口的条形图照常绘制。然而,男性人口的条形图的条形图的条形图向左延伸,而不是向右延伸。可以使用数据的负值来快速实现对称条形图的绘制。

    3D绘图

    通用语句

    1. from mpl_toolkits.mplot3d import axes3d
    2. import matplotlib.pyplot as plt

     3D 图形可以进行交互。 可以使用鼠标左键单击并拖动来移动图形。 您还可以使用鼠标右键单击并拖动来放大或缩小。

    3D散点图

    1. from mpl_toolkits.mplot3d import axes3d
    2. import matplotlib.pyplot as plt
    3. from matplotlib import style
    4. style.use('ggplot')
    5. fig = plt.figure()
    6. ax1 = fig.add_subplot(111, projection='3d')
    7. x = [1,2,3,4,5,6,7,8,9,10]
    8. y = [5,6,7,8,2,5,6,3,7,2]
    9. z = [1,2,6,3,2,7,3,3,7,2]
    10. x2 = [-1,-2,-3,-4,-5,-6,-7,-8,-9,-10]
    11. y2 = [-5,-6,-7,-8,-2,-5,-6,-3,-7,-2]
    12. z2 = [1,2,6,3,2,7,3,3,7,2]
    13. ax1.scatter(x, y, z, c='g', marker='o')
    14. ax1.scatter(x2, y2, z2, c ='r', marker='o')
    15. ax1.set_xlabel('x axis')
    16. ax1.set_ylabel('y axis')
    17. ax1.set_zlabel('z axis')
    18. plt.show()

    3D条形图 

     对于条形图,你需要拥有条形的起点,条形的高度和宽度。 但对于 3D 条形图,你还有另一个选项,就是条形的深度。 大多数情况下,条形图从轴上的条形平面开始,但是你也可以通过打破此约束来添加另一个维度。 

    1. from mpl_toolkits.mplot3d import axes3d
    2. import matplotlib.pyplot as plt
    3. import numpy as np
    4. from matplotlib import style
    5. style.use('ggplot')
    6. fig = plt.figure()
    7. ax1 = fig.add_subplot(111, projection='3d')
    8. x3 = [1,2,3,4,5,6,7,8,9,10]
    9. y3 = [5,6,7,8,2,5,6,3,7,2]
    10. z3 = np.zeros(10)
    11. dx = np.ones(10)
    12. dy = np.ones(10)
    13. dz = [1,2,3,4,5,6,7,8,9,10]
    14. ax1.bar3d(x3, y3, z3, dx, dy, dz)
    15. ax1.set_xlabel('x axis')
    16. ax1.set_ylabel('y axis')
    17. ax1.set_zlabel('z axis')
    18. plt.show()

     注意这里,我们必须定义xyz,然后是 3 个维度的宽度、高度和深度。

     

    附录:

    颜色表color=' '

    图标marker=" "

     

    固定代码模版

    绘图时加上:

    1. import pandas as pd
    2. import pylab as plt
    3. import numpy as np

    更改图片字体大小时加上:

    plt.rc('font',size=16)

    图片注释出现汉字时,需要加上:

    plt.rc('font',family='Simhei')

    生成等长标注的图表:

    plt.axis("equal")

    为横纵坐标生成标签:

    1. plt.xlabel('横坐标标签名')
    2. plt.ylabel('纵坐标标签名')

    X轴范围

    plt.xlim((2000,2010))  # X轴的起点和终点


    Y轴范围

    plt.ylim(6e9,7e9) # Y轴的起点和终点

    为生成的图表添加表头:

    plt.title(“标题名”)

    显示已绘制的图片:

    plt.show()

     图例

    1. plt.legend()
    2. plt.legend(labels=['人口'])


    网格线

    plt.grid(axis='y')  # axis: 'both','x','y'

    设置三维图像模型

    ax=plt.axes(projection='3d')


    生成三维图像(空白画板)

    1. import pylab as plt
    2. axes=plt.axes(projection='3d')
    3. plt.show()

  • 相关阅读:
    深度神经网络(DNN)
    SpringBoot整合MyBatis从零开始
    【Rust日报】2022-10-24 使用 Bevy 和 dfdx 解决经典的 Cart Pole问题
    git强制推送代码教程
    WebGPU 入门:绘制一个三角形
    lua基础之package
    基于SSM的在线音乐管理系统
    14.8 Socket 一收一发通信
    C++初阶 Vector模拟实现
    【Spring MVC】@RequestMapping注解属性
  • 原文地址:https://blog.csdn.net/weixin_60535956/article/details/126367827