当前位置:   article > 正文

Backend - 数据分析 matplotlib

Backend - 数据分析 matplotlib

目录

一、作用

二、安装环境

(一)虚拟环境终端

(二)代码导入库

(三)设置中文

1. 使用window自带(推荐)

2. 下载字体

三、应用

(一)基础知识

1. plt.plot()

(1)折线图的画图样式

(2)设置颜色

(3)设置标记符号

(4)设置线型

2. plt.show()

3. plt.figure()

4. plt.title()

5. plt.xlabel() & plt.ylabel()

6. plt.tight_layout()

(二)多个子图

1. plt.subplots()

2. figure对象的add_subplots

3. figure对象的add_axes

4. 设置子图样式

(二)图形实例

1. 折线图 plot

(1)代码

(2)效果图

2. 条形图 bar

(1)代码

(2)效果图

3. 饼图 pie

(1)代码

(4)效果图

4. 折线图&条形图

(1)代码

(2)效果图


一、作用

        Matplotlib 是 Python 的绘图库。

二、安装环境

(一)虚拟环境终端

pip install matplotlib

(二)代码导入库

import matplotlib.pyplot as plt

(三)设置中文

        默认不支持中文。

1. 使用window自带(推荐)

  1. import matplotlib
  2. matplotlib.rc("font", family='Microsoft YaHei')

2. 下载字体

        下载某字体文件并放在项目里。

        网址(任选一个字体):https://github.com/adobe-fonts/source-han-sans/tree/release/OTF/SimplifiedChinese

        代码:

        每个有中文显示的地方,都需要设置fontproperties。

  1. import matplotlib
  2. zhfont = matplotlib.font_manager.FontProperties(fname="../项目名/应用app名/static/font/SourceHanSansSC-Regular.otf"
  3. plt.title("书籍出售情况", fontproperties=zhfont)  # 图表标题
  4. plt.xlabel("出售书籍", fontproperties=zhfont)  # 横坐标轴标签
  5. plt.legend(loc='upper left', prop=zhfont)  # 显示图例(一定要在plot的后面)
  6. plt.xticks(list(books)[::3], rotation=45, fontproperties=zhfont) # 设置横坐标数据样式:[::3] 间隔3个显示一次;rotation 文字旋转度数;fontproperties设置中文字体

三、应用

(一)基础知识

1. plt.plot()

(1)折线图的画图样式
  1. plt.plot(x轴数据, y轴数据, color='red', marker='o', linestyle='--', label='值标签') # 画图
  2. plt.plot(x轴数据, y轴数据, 'g+', label='值标签') # 画图。其中g+表示color&marker
(2)设置颜色

        ① 'r'、'y'、'g'、'c'、'b'、'k'、'w'(红、黄、绿、青、蓝、黑、白)

        ② 'red'等全称

        ③ 十六进制或RGBA格式

(3)设置标记符号

        点'.'、圆圈'o'、三角'v'、方块's'、星'*'、六角形'h'、加号'+'、菱形'd'

(4)设置线型

        实线'-'、虚线'--'、虚点'-.'、点线':'

2. plt.show()

        显示画布

3. plt.figure()

        新建图形(画布)对象

fig = plt.figure(figsize=(5,3), facecolor='pink') # figsize设置画布宽高;facecolor设置背景色

4. plt.title()

        设置图表标题

plt.title("Matplotlib demo") # 图表标题

5. plt.xlabel() & plt.ylabel()

        设置坐标轴标签

  1. plt.xlabel("出售书籍") # x轴标签
  2. plt.ylabel("价格(¥)") # y轴标签

6. plt.tight_layout()

        处理标题遮挡

(二)多个子图

1. plt.subplots()

创建多个子图

  1. fig,axes=plt.subplots(2,2) # 画布子图分区(2*2个区域)
  2. ax1=axes[0,0] # 设置子图1在0,0的位置(其中,0,0表示从左往右,逐行排序的第1个位置)
  3. ax1.plot([1,2,3,4,5], [1,2,3,4,5]) # 子图数据
  4. ax2=axes[0,1] # 设置分区2在0,1的位置(其中,0,1表示从左往右,逐行排序的第2个位置)
  5. ax2.plot([1,3,5,7,9], [-1,2,-3,4,-5]) # 子图数据
  6. ax2.grid(color='g', linestyle='--', linewidth=1,alpha=0.3) # 子图样式
  7. ax2.legend(prop={'size': 10})
  8. plt.show()

2. figure对象的add_subplots

创建多个子图(固定行列)

  1. fig = plt.figure(figsize=(5,3), facecolor='pink') # 创建图形对象。figsize设置画布宽高;facecolor设置背景色
  2. ax1 = fig.add_subplot(2,2,1) # 第一个位置
  3. ax1.plot([1,2,3,4,5], [1,2,3,4,5]) # 分区1数据
  4. ax2 = fig.add_subplot(2,2,4) # 第四个位置
  5. ax2.plot([1,2,3,4,5], [-1,-2,-3,-4,-5]) # 分区2数据
  6. plt.show()

3. figure对象的add_axes

创建多个子图(百分比布局)

  1. fig = plt.figure() # 创建图形对象
  2. ax1=fig.add_subplot(1,2,2) # 设置主图1*2的第2个位置
  3. ax1.plot([1,2,3,4,5], [1,2,3,4,5]) # 数据 
  4. ax1.set_title('主图') # 标题
  5. ax2 = fig.add_axes([0.64,0.68,0.1,0.1]) # 设置子图,add_axes中阵列含义:[距离左64%,距离底68%,宽10%,高10%]
  6. ax2.plot([0.1,0.2,0.3,0.4,0.5], [0.1,0.2,0.3,0.4,0.5], 'r') # 数据
  7. ax2.set_title('图中图') # 标题
  8. plt.show()

4. 设置子图样式

  1. fig = plt.figure()
  2. ax1 = fig.add_subplot(211)
  3. ax1.set_title('Matplotlib demo') # 标题
  4. ax1.set_xlabel('书籍') # 设置子图的x轴标签
  5. ax1.set_ylabel('价格') # 设置子图的y轴标签
  6. # ax1.set_xticks([1, 2, 3]) # 设置x轴刻度
  7. ax1.set_yticks([0,20,40,60,80])  # 设置y轴刻度
  8. # ax1.set_xlim(0,100) # 设置x轴取值范围
  9. ax1.set_ylim(0,100) # 设置y轴取值范围
  10. ax1.set_xticklabels(['科幻','教育','文学']) # 设置 x 轴刻度标签

(二)图形实例

1. 折线图 plot

(1)代码
  1. import matplotlib.pyplot as plt
  2. import matplotlib
  3. matplotlib.rc("font", family='Microsoft YaHei')
  4. def get_data():
  5.     books = ['数据结构', '数据库原理', '操作系统', '计算机组成原理']  # x轴的数据
  6.     prices = [40,10,60,80] # y轴的数据
  7.     actual_prices = [50,95,80,45] # y轴的数据
  8.     plt.plot(books, prices, color='red', marker='o', linestyle='--', label='预售价') # 画图
  9.     plt.plot(books, actual_prices, color='blue', marker='.', linestyle='solid', label='实际售价') # 画图
  10.     plt.title("Matplotlib demo") # 图表标题
  11.     plt.xlabel("出售书籍") # x轴轴标签
  12.     plt.ylabel("价格(¥)") # y轴轴标签
  13.     plt.ylim(20,100) # 控制Y轴的显示范围
  14.     plt.legend(loc='upper left')  # 显示图例(一定要在plot的后面)
  15.     plt.xticks(list(books)[::3], rotation=45) # 设置x轴刻度样式:[::3] 间隔3个显示一次;rotation 文字旋转度数;fontproperties设置中文字体
  16.     plt.show()
  17. if __name__ == "__main__":
  18.     get_data()
(2)效果图

2. 条形图 bar

(1)代码
  1. import matplotlib.pyplot as plt
  2. import matplotlib
  3. matplotlib.rc("font", family='Microsoft YaHei')
  4. def get_data():
  5.     fig, ax = plt.subplots(figsize=(4,3), layout='constrained')
  6.     books = ['数据结构', '数据库原理', '操作系统', '计算机组成原理']  # 横坐标的数据
  7.     prices = [40,10,60,80] # 纵坐标的数据
  8.     ax.set(ylim=(0, 90))
  9.     ax.bar(books, prices)
  10.     plt.show()
  11. if __name__ == "__main__":
  12.     get_data()
(2)效果图

3. 饼图 pie

(1)代码
  1. pie_data = [10, 20, 30, 80]
  2. colors = plt.get_cmap('Blues')(np.linspace(0.2, 0.9, len(pie_data))) # 根据饼图数据设置渐变颜色
  3. fig, ax = plt.subplots()
  4. labels = ['科幻', '科学', '文学', '教育']
  5. wedges, texts, autotexts = ax.pie(pie_data, # 饼图数据
  6.                                 colors=colors, # 饼图渐变色
  7.                                 radius=3, # 饼图半径
  8.                                 center=(4, 4), # 饼图的圆中心位置
  9.                                 wedgeprops={"linewidth": 1, "edgecolor": "white"}, # 分块边界线样式
  10.                                 frame=True, # 显示坐标轴
  11.                                 textprops=dict(color='r'), # 文本颜色
  12.                                 labels=labels, # 显示每块标题标签
  13.                                 autopct='%.2f%%', # 展示每块百分比值;若要用autopct属性,则pie()方法回传的变量有三个
  14.                                 shadow=True, # 显示阴影
  15.                                 startangle=30 # 分块起始角度(x轴正向计算度数,逆时针)
  16.                             ) 
  17. ax.set(xlim=(0, 8), xticks=np.arange(1, 8), # 设置x轴的刻度范围
  18.         ylim=(0, 8), yticks=np.arange(1, 8)) # 设置y轴的刻度范围
  19. ax.legend(wedges, # 图例的标签颜色
  20.             labels, # 图例的标签数据
  21.             title="demo", # 图例标题
  22.             loc="center left",
  23.             bbox_to_anchor=(1, 0.5, 0, 0) # (x, y, width, height)
  24.             ) # 图例
  25. plt.show()
(4)效果图


4. 折线图&条形图

(1)代码
  1. books = ['数据结构', '数据库原理', '操作系统', '计算机组成原理']  # x轴的数据
  2. prices = [40,10,60,80] # y轴的数据
  3. actual_prices = [50,95,80,45] # y轴的数据
  4. plt.plot(books, prices, color='red', marker='o', linestyle='--', label='预售价') # 折线图
  5. plt.bar(books, actual_prices, color='blue', label='实际售价') # 条形图
  6. plt.title("Matplotlib demo") # 图表标题
  7. plt.xlabel("出售书籍") # x轴轴标签
  8. plt.ylabel("价格(¥)") # y轴轴标签
  9. plt.ylim(0,100) # 控制Y轴的显示范围
  10. plt.legend(loc='upper left')  # 显示图例(一定要在plot的后面)
  11. plt.xticks(list(books)[::1], rotation=0) # 设置x轴刻度样式:[::1] 间隔1个显示一次;rotation 文字旋转度数;fontproperties设置中文字体
  12. plt.show()
(2)效果图

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

闽ICP备14008679号