当前位置:   article > 正文

Python中plt绘图包的基本使用方法_plt.xlabel

plt.xlabel

        在对数据进行处理和分析时,我们经常需要借助可视化工具,来将数据的一些特征以更易于我们理解的方式展现出来。在学习对Titanic - Machine Learning from Disaster | Kaggle的数据处理时,发现了自己对plt的了解和使用的缺失,因此进行一定的基础用法的学习,方便之后自己的使用,而不需要频繁的查阅资料。

        本文的代码参考自 Python深度学习入门之plt画图工具基础使用,并根据自己的理解做了一些改动。

        我将plt的图像绘制细分为四个步骤,分别是1)获取数据;2)设置画布;3)绘制内容;4)设置坐标轴刻度;5)添加网格;6)添加图例;7)添加坐标轴名称和图像标题;8)保存和展示。

1.数据的获取

         获取自己需要绘制的数据,一幅图需要x轴和y轴,所以需要两组数据。

  1. import matplotlib.pyplot as plt
  2. import random
  3. x = range(60)
  4. y1 = [random.uniform(35, 40) for i in x] # uniform提供[35, 40)随机值
  5. y2 = [random.uniform(25, 30) for j in x]

2.创建画布

  1. # 创建画布
  2. plt.figure(figsize=(8, 6), dpi=80)

        我们使用plt.figure()函数创建空白画布。常用的参数中,figsize需要一个元组值,表示空白画布的横纵坐标比;dpi表示像素的个数,实际上就是对图像大小的控制。

3.绘制内容

        plt中提供了很多形式的内容绘制模块以供调用,例如曲线、散点图(scatter)、柱状图(bar)、饼图(pie)等。此处我们绘制双曲线图作为示例。

  1. # 绘制曲线
  2. plt.plot(x, y1, color='r', linestyle='--', label='Shanghai')
  3. plt.plot(x, y2, color='g', linestyle='-.', label='Beijing')

        我们使用plt.plot()函数进行曲线的绘制。其中,前两个输入参数表示x轴和y轴的坐标,plot函数将提供的坐标点连接,即成为要绘制的各式线型。因此,平滑的曲线一般需要较密集的数据才能够绘制。常用的参数中,color表示绘制的颜色。官方提供的颜色种类如下表:

         linestyle参数表示绘制的线型,可用的线型包括 '-',  '--',  '-.',  ':',  'None',  ' ',  '',  'solid', 'dashed', 'dashdot', 'dotted',共11类。label参数则是对线段的一种名称标记,用于之后图例的绘制。

4.绘制图例

plt.legend(loc='best')  # 提供11种不同的图例显示位置

         plt.legend()函数用于绘制图例。loc参数表示图例的位置,默认为best,表示自动选择。

5.设置坐标轴刻度

  1. # 设置刻度和步长
  2. z = range(-10, 45)
  3. x_label = ["10:{}".format(i) for i in x]
  4. plt.xticks(x[::5], x_label[::5])
  5. plt.yticks(z[::5])

        plt.xticks()和plt.yticks()函数用于设置坐标轴的步长和刻度。其中,第一个参数表示设置的步长大小;第二个参数表示显示的坐标轴刻度,默认为坐标的值。

6.添加网格信息

plt.grid(linestyle='--', alpha=0.5, linewidth=2)

        plt.grid()函数用于添加图片中的背景网格。常用参数中,alpha表示透明度设置,linewith表示线宽。

7.添加标题

  1. # 添加标题
  2. plt.xlabel('Time/ min')
  3. plt.ylabel('Temperature/ ℃')
  4. plt.title('Curve of Temperature Change with Time')

        plt.xlabel()、plt.ylabel()和plt.title()函数分别用于设置x坐标轴、y坐标轴和图标的标题信息。

8.保存和展示

  1. # 保存和展示
  2. # plt.savefig('./plt_img/test2.png')
  3. plt.show()

        plt.savefig()函数用于保存图片,plt.show()函数则用于显示图片。

通过以上8个步骤,我们就能够使用plt包绘制出各式各样的基本图像了。

以下是几种常见图形的绘制和代码:

1.单折线

 代码:

  1. import matplotlib.pyplot as plt
  2. import numpy as np
  3. import random
  4. # have a try
  5. plt.rcParams['font.sans-serif'] = ['SimHei'] # 显示中文
  6. plt.rcParams['axes.unicode_minus'] = False # 用来正常显示负号
  7. x = range(60)
  8. # print(type(x))
  9. y = [random.uniform(35, 40) for i in x] # uniform提供[35, 40)随机值
  10. # print(type(y))
  11. # 创建画布
  12. plt.figure(figsize=(12, 8), dpi=80) # figsize为横纵坐标比,dpi为像素点个数
  13. plt.plot(x, y)
  14. # 设置刻度和步长
  15. z = range(-10, 45)
  16. x_label = ["10:{}".format(i) for i in x]
  17. plt.xticks(x[::5], x_label[::5])
  18. plt.yticks(z[::5])
  19. # 添加网格信息
  20. plt.grid(linestyle='--', alpha=0.5, linewidth=2)
  21. # 添加标题
  22. plt.xlabel('Time/ min')
  23. plt.ylabel('Temperature/ ℃')
  24. plt.title('Curve of Temperature Change with Time')
  25. # 保存和展示
  26. plt.savefig('./plt_img/test1.png')
  27. plt.show()

 2.双折线

代码:

  1. import matplotlib.pyplot as plt
  2. import numpy as np
  3. import random
  4. # 多曲线图
  5. x = range(60)
  6. # print(type(x))
  7. y1 = [random.uniform(35, 40) for i in x] # uniform提供[35, 40)随机值
  8. y2 = [random.uniform(25, 30) for j in x]
  9. # print(type(y))
  10. # 创建画布
  11. plt.figure(figsize=(8, 6), dpi=80) # figsize为横纵坐标比,dpi为像素点个数
  12. # 绘制曲线
  13. plt.plot(x, y1, color='r', linestyle='--', label='Shanghai')
  14. plt.plot(x, y2, color='g', linestyle='-.', label='Beijing')
  15. # 绘制曲线图例
  16. plt.legend(loc='best') # 提供11种不同的图例显示位置
  17. # 设置刻度和步长
  18. z = range(-10, 45)
  19. x_label = ["10:{}".format(i) for i in x]
  20. plt.xticks(x[::5], x_label[::5])
  21. plt.yticks(z[::5])
  22. # 添加网格信息
  23. plt.grid(linestyle='--', alpha=0.5, linewidth=2)
  24. # 添加标题
  25. plt.xlabel('Time/ min')
  26. plt.ylabel('Temperature/ ℃')
  27. plt.title('Curve of Temperature Change with Time')
  28. # 保存和展示
  29. # plt.savefig('./plt_img/test2.png')
  30. plt.show()

3.多图像绘制

 代码:

  1. import matplotlib.pyplot as plt
  2. import numpy as np
  3. import random
  4. # 多图
  5. area = ['Shanghai\'s', 'Beijing\'s']
  6. x = range(60)
  7. # print(type(x))
  8. y1 = [random.uniform(35, 40) for i in x] # uniform提供[35, 40)随机值
  9. y2 = [random.uniform(25, 30) for j in x]
  10. # print(type(y))
  11. # 创建画布
  12. fig, axes = plt.subplots(nrows=1, ncols=2, figsize=(12, 8), dpi=80)
  13. axes[0].plot(x, y1, color='r', linestyle='--', label='Shanghai')
  14. axes[1].plot(x, y2, color='g', linestyle='-.', label='Beijing')
  15. # 分别对axes[0]和axes[1]进行之前操作
  16. z = range(-10, 45)
  17. x_label = ["10:{}".format(i) for i in x]
  18. for t in range(2):
  19. # 设置步长
  20. axes[t].set_xticks(x[::10])
  21. axes[t].set_xticklabels(x_label[::10])
  22. axes[t].set_yticks(z[::5])
  23. # 添加图例
  24. axes[t].legend(loc='lower left')
  25. # 添加网格信息
  26. axes[t].grid(linestyle='--', alpha=0.5, linewidth=2)
  27. # 添加标题
  28. axes[t].set_xlabel('Time/ min')
  29. axes[t].set_ylabel('Temperature/ ℃')
  30. axes[t].set_title('Curve of {} Temperature Change with Time'.format(area[t]))
  31. # 保存和展示
  32. plt.savefig('./plt_img/test3.png')
  33. plt.show()

4.曲线

 代码:

  1. import matplotlib.pyplot as plt
  2. import numpy as np
  3. import random
  4. # 获取数据
  5. x = np.linspace(-1, 1, 1000) # 在[-1, 1]间生成1000个数
  6. y = 2 * (x ** 2)
  7. # 创建画布
  8. plt.figure(figsize=(12, 8), dpi=80) # figsize为横纵坐标比,dpi为像素点个数
  9. # 绘制曲线
  10. plt.plot(x, y)
  11. # 绘制图例
  12. # plt.legend()
  13. # 添加网格信息
  14. plt.grid(linestyle='--', alpha=0.5, linewidth=2)
  15. # 添加标题
  16. plt.xlabel('X')
  17. plt.ylabel('Y')
  18. # 保存和展示
  19. plt.savefig('./plt_img/test4.png')
  20. plt.show()

5.散点图

 代码:

  1. import matplotlib.pyplot as plt
  2. import numpy as np
  3. import random
  4. # 散点图
  5. x = np.linspace(-1, 1, 10)
  6. y = 2 * (x ** 2)
  7. # 创建画布
  8. plt.figure(figsize=(12, 8), dpi=80)
  9. plt.scatter(x, y)
  10. # plt.legend()
  11. # 添加网格信息
  12. plt.grid(linestyle='--', alpha=0.5, linewidth=2)
  13. # 添加标题
  14. plt.xlabel('X')
  15. plt.ylabel('Y')
  16. # 保存和展示
  17. plt.savefig('./plt_img/test5.png')
  18. plt.show()

6.柱状图

 代码:

  1. import matplotlib.pyplot as plt
  2. import numpy as np
  3. import random
  4. # 单柱状图
  5. x = range(6)
  6. # print(type(x))
  7. y = [random.uniform(0, 100) for i in x]
  8. # print(type(y))
  9. # 创建画布
  10. plt.figure(figsize=(8, 6), dpi=80) # figsize为横纵坐标比,dpi为像素点个数
  11. # 绘制内容
  12. plt.bar(x, y, width=0.4, color=['r', 'k', 'y', 'g', 'b', 'c'], align='center')
  13. # 绘制图例
  14. # plt.legend()
  15. # 显示具体值
  16. for t in range(6):
  17. plt.text(x=t-0.08, y=y[t]+1, s=int(y[t])) # x,y为显示坐标,s为内容
  18. # 修改刻度
  19. plt.xticks(x, ['class1', 'class2', 'class3', 'class4', 'class5', 'class6'])
  20. # 添加网格信息
  21. plt.grid(linestyle='--', alpha=0.5, linewidth=2)
  22. # 添加标题
  23. plt.xlabel('Classes')
  24. plt.ylabel('Numbers')
  25. plt.title('Bar')
  26. # 保存和展示
  27. plt.savefig('./plt_img/test6.png')
  28. plt.show()

7.双柱状图

 代码:

  1. import matplotlib.pyplot as plt
  2. import numpy as np
  3. import random
  4. # 双柱状图
  5. x = range(6)
  6. # print(type(x))
  7. y = [random.uniform(0, 100) for i in x]
  8. z = [random.uniform(0, 100) for j in x]
  9. # print(type(y))
  10. # 创建画布
  11. plt.figure(figsize=(8, 6), dpi=80) # figsize为横纵坐标比,dpi为像素点个数
  12. # 绘制内容
  13. plt.bar(x, y, width=0.2, color='b', label='value1')
  14. # [i+0.2 for i in x]是对横坐标值的调整
  15. plt.bar([i+0.2 for i in x], z, width=0.2, color='g', label='value2')
  16. # 绘制图例
  17. plt.legend()
  18. # 显示具体值
  19. for t in range(6):
  20. plt.text(x=t-0.08, y=y[t] + 1, s=int(y[t])) # x,y为显示坐标,s为内容
  21. plt.text(x=t+0.12, y=z[t] + 1, s=int(z[t])) # x,y为显示坐标,s为内容
  22. # 修改刻度
  23. plt.xticks(x, ['class1', 'class2', 'class3', 'class4', 'class5', 'class6'])
  24. # 添加网格信息
  25. plt.grid(linestyle='--', alpha=0.5, linewidth=2)
  26. # 添加标题
  27. plt.xlabel('Classes')
  28. plt.ylabel('Numbers')
  29. plt.title('Bar')
  30. # 保存和展示
  31. plt.savefig('./plt_img/test7.png')
  32. plt.show()

 8.饼图

 代码:

  1. import matplotlib.pyplot as plt
  2. import numpy as np
  3. import random
  4. # 饼图,一般小于9个类别
  5. # 数据和标签
  6. x = range(8)
  7. y = [random.uniform(0, 200) for i in x]
  8. label = ['class1', 'class2', 'class3', 'class4', 'class5', 'class6', 'class7', 'class8']
  9. # 画布
  10. plt.figure(figsize=(14, 8), dpi=80)
  11. # 饼图
  12. plt.pie(y, labels=label, colors=['r', 'gray', 'y', 'g', 'b', 'c', 'm', 'pink']
  13. , autopct='%1.1f%%') # autopct表示显示数字百分比
  14. # 图例
  15. plt.legend(loc='upper right')
  16. # 调整整体布局,防止图例和内容重叠
  17. plt.axis('equal')
  18. # 标题
  19. plt.title('the Number of Classes')
  20. # 展示
  21. plt.savefig('./plt_img/test8.png')
  22. plt.show()

感谢阅读!

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/运维做开发/article/detail/898747
推荐阅读
相关标签
  

闽ICP备14008679号