matplotlib在同一个figure绘制多条线,或绘制多个子图

您所在的位置:网站首页 python画两条曲线的动态图 matplotlib在同一个figure绘制多条线,或绘制多个子图

matplotlib在同一个figure绘制多条线,或绘制多个子图

2024-07-11 01:22| 来源: 网络整理| 查看: 265

大多数人学Python用的第一个绘图库应该都是matplotlib,最简单的绘图方法是用plot,其他参数用默认值,只需要横纵坐标值就可以绘图了。

一、方法思路

要在同一个图里面绘制多条线,只需要创建一个figure,然后不断的进行plot绘制线图,以及线对应的参数设置(可选操作),最后show()一下就可以了:

import matplotlib.pyplot as plt import random x = list(range(10)) y1 = [random.randint(0,9) for i in x] y2 = [random.randint(3,12) for i in x] plt.figure() plt.plot(x,y1,'r') plt.plot(x,y2,'b') plt.show()

结果图如下: 在这里插入图片描述 要在同一个figure绘制多个子图,跟上面同一个图绘制多条线类似,只是在绘制某一个子图上的内容之前,要先用subplot()指定figure的布局和子图的位置:

import matplotlib.pyplot as plt import random x = list(range(10)) y1 = [random.randint(0,9) for i in x] y2 = [random.randint(3,12) for i in x] y3 = [random.randint(3,33) for i in x] y4 = [random.randint(2,31) for i in x] plt.figure() plt.subplot(2,2,1) plt.plot(x,y1,'r') plt.subplot(2,2,2) plt.plot(x,y2,'b') plt.subplot(2,2,3) plt.plot(x,y3) plt.subplot(2,2,4) plt.plot(x,y4) plt.show()

结果图如下: 在这里插入图片描述

二、运用

当然,上面绘图的随机数没有实际的意义,举个有一点意义的例子,比如有份数据有x、y、diqu三个特征,现在要在同一个图中绘制出各个地区的趋势进行对比。 在这里插入图片描述 思路: 获取diqu的所有类别,根据类型筛选每次在图上画线的数据,把plot绘制的过程放在for循环里面,在循环外面show() code:

import matplotlib.pyplot as plt import pandas as pd df = pd.read_excel('test.xlsx') #获取diqu所有类别 num = sorted(list(set(df['diqu']))) n = len(num) plt.rcParams['font.sans-serif']=['SimHei'] plt.rcParams['axes.unicode_minus']=False plt.figure() for i in range(n): print(num[i]) dfs = df[df['diqu']==num[i]] plt.plot(dfs['x'],dfs['y'],label=num[i]) plt.legend() plt.show()

结果图如下: 在这里插入图片描述 这里各类别的横坐标x均是从0开始且量级相同,固可以通过同一个图绘制多条线进行趋势对比,若不同类别的绘图变量x和y的值相差较大,取值大的类别会压缩取值小的类别显示效果,这时可以绘制多个子图来分别查看类别的趋势。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3