精华内容
下载资源
问答
  • 要在同里面绘制线,只需要创建个figure,然后不断的进行plot绘制线图,以及线对应的参数设置(可选操作),最后show()一下就可以了: import matplotlib.pyplot as plt import random x = list(range(10...

    大多数人学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的值相差较大,取值大的类别会压缩取值小的类别显示效果,这时可以绘制多个子图来分别查看类别的趋势。

    展开全文
  • import matplotlib.pyplot as plt import pandas as pd from matplotlib.pyplot import MultipleLocator plt.rcParams['font.sans-serif']=['SimHei'] #用来正常显示中文标签 plt.rcParams['axes.unicode_minus']=...
    1. 调用Python包
    import matplotlib.pyplot as plt
    import pandas as pd
    from matplotlib.pyplot import MultipleLocator
    plt.rcParams['font.sans-serif']=['SimHei'] #用来正常显示中文标签
    plt.rcParams['axes.unicode_minus']=False #用来正常显示负号
    
    1. 造数-DataFrame
    df = pd.DataFrame([['2010','aa',200,20],['2011','aa',210,30],['2012','aa',230,70],['2013','aa',260,20],['2014','aa',270,80],['2015','aa',200,20],
                       ['2010','bb',250,25],['2011','bb',280,65],['2012','bb',290,35],['2013','bb',650,85],['2014','bb',350,95],['2015','bb',250,55],
                       ['2010','cc',300,30],['2011','cc',380,33],['2012','cc',340,70],['2013','cc',380,80],['2014','cc',390,90],['2015','cc',300,30],
                       ['2010','dd',400,40],['2011','dd',430,50],['2012','dd',420,80],['2013','dd',470,50],['2014','dd',420,70],['2015','dd',490,40],
                       ['2010','ee',550,55],['2011','ee',560,85],['2012','ee',590,55],['2013','ee',590,65],['2014','ee',550,85],['2015','ee',570,55],
                       ['2010','ff',600,60],['2011','ff',670,40],['2012','ff',660,70],['2013','ff',630,90],['2014','ff',680,80],['2015','ff',620,60]
                      ],columns=['报表日期','股票名称','市值','FCFF'])
    df['报表日期']=df['报表日期'].apply(int)
    print(df)
    

    在这里插入图片描述

    1. 不同指标全部画在一张图上
    fig, ax = plt.subplots()
    h,l = ax.get_legend_handles_labels()
    for i in df['股票名称'].unique():
        df[df['股票名称']==i].groupby('股票名称').plot('报表日期','市值',ax=ax,figsize=(16, 10),label='%s_市值'%i)
        df[df['股票名称']==i].groupby('股票名称').plot('报表日期','FCFF',ax=ax,figsize=(16, 10),label='%s_FCFF'%i,linestyle='-.')
    #     sub_data[sub_data['股票名称']==i].groupby('股票名称').plot('报表日期','DebtRatioWithoutR&D',ax=ax,figsize=(16, 10),label='%s_D/E'%i,linestyle='-')
        
    
    x_major_locator=MultipleLocator(1.0)
    y_major_locator=MultipleLocator(50)
    ax=plt.gca()
    ax.xaxis.set_major_locator(x_major_locator)
    ax.yaxis.set_major_locator(y_major_locator)
    plt.legend(fontsize=12)
    plt.axis([2010, 2015, 10, 700])
    plt.show()
    

    效果如下:
    在这里插入图片描述
    PS:如果图例挡住折线了,调整一下图片尺寸或横纵坐标的范围即可。

    1. 或者按股票名称分别画对应指标
    for i in df['股票名称'].unique():
        x_major_locator=MultipleLocator(1.0)
        y_major_locator=MultipleLocator(50)
        ax=plt.gca()
        ax.xaxis.set_major_locator(x_major_locator)
        ax.yaxis.set_major_locator(y_major_locator)
    #     plt.legend(fontsize=12)
        plt.axis([2010, 2015, 10, 700])
        df[df['股票名称']==i].groupby('股票名称').plot('报表日期',['市值','FCFF'],figsize=(6, 4),label=['%s_市值'%i,'%s_FCFF'%i])
    

    效果如下(按股票名称画出多张图):
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    转载请附出处,谢谢。

    展开全文
  • 主要为大家详细介绍了python使用matplotlib模块绘制条折线、散点的方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
  • 就是连个y值个x值 import matplotlib.pyplot as plt from matplotlib import font_manager import random x= range(1,27,2) y1 = [random.randint(1,30) for i in x] y2 = [random.randint(1,30) for i in...

    j

     

     

     

    就是连个y值一个x值

    import matplotlib.pyplot as plt
    from  matplotlib import font_manager
    import random
    x= range(1,27,2)
    y1 = [random.randint(1,30) for i in x]
    y2 = [random.randint(1,30) for i in x]

    font_manager = font_manager.FontProperties(fname = 'C:/Windows/Fonts/simsun.ttc',size = 18)


    plt.figure(figsize=(20,8),dpi = 80)
    plt.plot(x,y1,color = 'r',label = 'y1')
    plt.plot(x,y2,color = 'y',label = 'y2')
    plt.legend(prop = font_manager,loc = 'upper right') #在右上角生成图例,loc:lower left、center left、upper center

    #注意的是想要有图例,就必须在plt.plot()中设置他的label值,这一块的中文显示用的是prop不是fontproperties
    plt.show()

     

    展开全文
  • 今天小编就为大家分享篇解决python中用matplotlib时出现图形部分重叠的问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
  • Matplotlib——多图合并

    千次阅读 2020-04-08 11:22:04
    matplotlib 是可以组合许多的小, 放在一张大里面显示的. 使用到的方法叫作 subplot. 使用import导入matplotlib.pyplot模块, 并简写成plt. 使用plt.figure创建个图像窗口. 使用plt.subplot来创建小. plt....

    1.多图合一(subplot)

    matplotlib 是可以组合许多的小图, 放在一张大图里面显示的. 使用到的方法叫作 subplot.

    使用import导入matplotlib.pyplot模块, 并简写成plt. 使用plt.figure创建一个图像窗口.
    使用plt.subplot来创建小图. plt.subplot(2,2,1)表示将整个图像窗口分为2行2列, 当前位置为1. 使用plt.plot([-2,3],[1,5])在第1个位置创建一个小图.依此类推后面三个子图。

    import matplotlib.pyplot as plt
    
    plt.figure(figsize=(5,4))
    
    plt.subplot(2,2,1)   #221亦可
    plt.plot([-2,3],[1,5])
    
    plt.subplot(2,2,2)
    plt.plot([4,9],[3,-5])
    
    plt.subplot(2,2,3)
    plt.plot([-6,-9],[3,-7])
    
    plt.subplot(2,2,4)
    plt.plot([1,-1],[0,4])
    
    plt.tight_layout()  #自动调整子批次参数,使子批次适合图形区域
    

    在这里插入图片描述

    2.分格显示

    2.1.subplot2grid方法

    使用plt.subplot2grid来创建第1个小图, (3,3)表示将整个图像窗口分成3行3列, (0,0)表示从第0行第0列开始作图,colspan=3表示列的跨度为3, rowspan=1表示行的跨度为1. colspan和rowspan缺省, 默认跨度为1.后面子图与此方法一样。

    import matplotlib.pyplot as plt
    
    plt.figure()
    ax1 = plt.subplot2grid((3, 3), (0, 0), colspan=3)  #plt.subplot2grid(shape, location, rowspan, colspan)
    
    
    ax1.plot([1.6, 2.3], [0.8, 1.2])    #画直线
    ax1.set_title('this is ax1')
    
    ax2 = plt.subplot2grid((3, 3), (1, 0), colspan=1)  #起始(1,0)横向跨度为1
    ax3 = plt.subplot2grid((3, 3), (1, 2), rowspan=2)  #起始(1,2)纵向跨度为2
    ax4 = plt.subplot2grid((3, 3), (2, 0))
    ax4.scatter([0.5, 1], [1.8, 1.5])
    ax4.set_xlabel('X')
    ax4.set_ylabel('Y')
    ax5 = plt.subplot2grid((3, 3), (2, 1))
    
    plt.tight_layout()
    plt.show()
    

    在这里插入图片描述

    2.2.gridspec方法

    使用import导入matplotlib.pyplot模块, 并简写成plt. 使用import导入matplotlib.gridspec, 并简写成gridspec.

    使用plt.figure()创建一个图像窗口, 使用gridspec.GridSpec将整个图像窗口分成3行3列.

    使用plt.subplot来作图, gs[0, :]表示这个图占第0行和所有列, gs[1, :2]表示这个图占第1行和第2列前的所有列, gs[1:, 2]表示这个图占第1行后的所有行和第2列, gs[-1, 0]表示这个图占倒数第1行和第0列, gs[-1, -2]表示这个图占倒数第1行和倒数第2列.

    import matplotlib.pyplot as plt
    import matplotlib.gridspec as gridspec
    
    plt.figure()
    gs = gridspec.GridSpec(3, 3)
    # use index from 0
    ax6 = plt.subplot(gs[0, :])
    ax7 = plt.subplot(gs[1, :2])
    ax8 = plt.subplot(gs[1:, 2])    #第一行第二行的第二列(起始为0)
    ax9 = plt.subplot(gs[-1, 0])    #最后一行第一个位置
    ax10 = plt.subplot(gs[-1, -2])  #最后一行倒数第二个位置
    
    plt.tight_layout()
    plt.show()
    

    在这里插入图片描述

    2.3.subplots方法

    使用plt.subplots建立一个2行2列的图像窗口,sharex=True表示共享x轴坐标, sharey=True表示共享y轴坐标. ((ax11, ax12), (ax13, ax14))表示第1行从左至右依次放ax11和ax12, 第2行从左至右依次放ax13和ax14.

    使用ax11.scatter创建一个散点图.

    import matplotlib.pyplot as plt
    
    f, ((ax11, ax12), (ax13, ax14)) = plt.subplots(2, 2, sharex=True, sharey=True)
    ax11.scatter([1.3,1.75], [1.8,1])
    
    plt.tight_layout()   #表示紧凑显示图像
    plt.show()
    

    在这里插入图片描述

    3.图中有图(plot in plot)

    首先确定大图左下角的位置以及宽高:left, bottom, width, height = 0.1, 0.1, 0.8, 0.8

    注意,4个值都是占整个figure坐标系的百分比。在这里,假设figure的大小是10x10,那么大图就被包含在由(1, 1)开始,宽8,高8的坐标系内。

    将大图坐标系添加到figure中,颜色为r(red),取名为title。

    接着,我们来绘制右上角的小图,步骤和绘制大图一样,注意坐标系位置和大小的改变:

    import matplotlib.pyplot as plt
    
    fig = plt.figure()   #定义一个图像窗口
    
    x = [2, 3, 2, 5, 4, 8, 7]    
    y = [2, 5, 6, 8, 2, 3, 1]
    
    left, bottom, width, height = 0.1, 0.1, 0.8, 0.8   #left、bottom为原点坐标(按比例),width, height为图的长宽(按比例)
    ax1 = fig.add_axes([left, bottom, width, height])   #在fig中添加一个图
    ax1.plot(x, y, 'blue')
    ax1.set_xlabel('x')
    ax1.set_ylabel('y')
    ax1.set_title('title')
    
    left, bottom, width, height = 0.6, 0.6, 0.25, 0.25
    ax2 = fig.add_axes([left, bottom, width, height])    #在fig中再添加一个图
    ax2.plot(y, x, 'r')
    ax2.set_xlabel('x')
    ax2.set_ylabel('y')
    ax2.set_title('small fig in large ')
    
    plt.show()
    

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

    4.设置双坐标轴

    有时候我们会用到次坐标轴,即在同个图上有第2个y轴存在。同样可以用matplotlib做到,而且很简单。

    对ax1调用twinx()方法,生成如同镜面效果后的ax2

    import matplotlib.pyplot as plt
    import numpy as np
    
    x = np.arange(0,10,0.1)
    y1 = 2*(x**2)
    y2 = -0.5*(x**2)
    
    fig, ax1 = plt.subplots()
    
    ax2 = ax1.twinx()    #使用twinx添加y轴的坐标轴
    ax1.plot(x, y1, 'g-')
    ax2.plot(x, y2, 'r+')
    
    #设置标签(共用X轴)
    ax1.set_xlabel('X') 
    ax1.set_ylabel('Y1',color='g')
    ax2.set_ylabel('Y2',color='r')
    
    plt.show()
    

    在这里插入图片描述

    展开全文
  • 我就废话不说了,大家还是直接看代码吧! 绘制曲线: import time import numpy as np import matplotlib.pyplot as plt x = np.linspace(0, 10, 1000) y = np.sin(x) plt.figure(figsize=(6,4)) plt.plot(x,y,...
  • 分类目录——Matplotlib plt.subplot2grid 效果 代码 在程序中通过注释进行说明 # 通过plot.subplotgrid()来划分网格 import matplotlib.pyplot as plt plt.figure('subgrid') ax1 = plt.subplot2grid((3, 3), (0, ...
  • 使用matplotlib在一张上画条曲线

    万次阅读 2020-03-21 21:59:50
    做数据分析,还有机器学习的收敛性,准确性分析时,往往需要将一些数据图形化,以曲线的形式显示出来,下面就介绍两种方式来实现这个小问题,种是object-oriented面向对象的,另种是基于plt的。 下面这个方式是...
  • 使用matplotlib绘制折线,柱状,柱线混合

    万次阅读 多人点赞 2019-08-31 21:54:49
    matplotlib介绍 Matplotlib 是 Python 的绘图库。 它可与 NumPy 一起使用,提供了种有效的 MatLab 开源替代方案。 它也可以和图形工具包一起使用,如 ...matplotlib绘制折线 绘制条折线的折线 # -*- c...
  • Matplotlib在python中绘制曲线线图

    千次阅读 2020-11-26 00:20:09
    要使曲线平滑:import matplotlib.pyplot as pltimport numpy as npfrom scipy.interpolate import make_interp_spline, BSplinedef create_spline_from(x, y, resolution):new_x = np.linspace(x[0], x[-1], ...
  • 时候需要在程序运行过程中,查看一些数据的动态变化,最容易想到的是像opencv那样直接循环使用imshow()形成动态画面,但是由于matplotlib中的显示模式是阻塞模式,在plt.show()之后程序就会暂停在那,打开个...
  • matplotlib 绘制个子条曲线

    千次阅读 2020-02-12 17:53:46
    matplotlib 中,个figure即为个画板,用plt.figure()创建个新画板,如果只有个画板的话这句可以省略。 #创建第个视图(画板) plt.figure(1) #第个画板的内容 #… #创建第二个视图(画板) plt.figure...
  • [work] matplotlib个曲线的折线

    千次阅读 2018-12-24 07:11:44
    这里我利用的是matplotlib.pyplot.plot的工具来绘制折线,这里先给出个段代码和结果: # -*- coding: UTF-8 -*- import numpy as np import matplotlib as mpl import matplotlib.pyplot as plt #这里导入...
  • 主要介绍了Python使用matplotlib简单绘图,结合实例形式分析了Python基于matplotlib绘制正弦与余弦曲线相关操作技巧,需要的朋友可以参考下
  • matplotlib.pyplot
  • Matplotlib——在一张内绘制条曲线

    千次阅读 多人点赞 2020-07-24 16:25:38
    plt.subplots()的作用是创建或者组子图返回值是Figure,axes.Axes。此处代码中 fig = Figure ax = axes.Axes。 3.使用Axes.plot作图 fig, ax = plt.subplots() # 创建实例 x = np.linspac
  • matplotlib条曲线

    千次阅读 2017-08-23 09:52:01
    plot(self, *args, **kwargs) def plot(self,ax,ay,colour): ”’#最常用的绘图命令plot, ”’self.axes.grid()self.axes.plot(ax,ay,colour) ...plot(x1, y1, x2, y2, antialised=False) ##画条曲线 plot
  • 上一节了解了一张画布中只有个子图绘图方法后,现在来讨论一张画布中有个子图的绘图实践,是实现方式也是分:Pyplot风格,用plot.subplot()函数实现OO风格,用对应子图axes的方法实现pyplot风格范例代码如下所示...
  • python使用matplotlib绘图详解(自动标记、将线绘制在中,绘制张图) plt.plot(x,y,markes,label),label表示图例,x为横坐标,y为纵坐标,markes为标记 使用for循环将条线段绘制在中 ...
  • 在使用Matplotlib画图过程中,有些内容必须鼠标点击或者划过才可以显示,这个...下面是个小例子: # -*- coding: UTF-8 -*- import matplotlib.pyplot as plt fig = plt.figure() po_annotation = [] for i in range
  • 在上篇文章当中我们介绍了matplotlib当中subplot的概念以及用法,今天我们将会来介绍matplotlib绘图中的一些具体的设置,可以让我们画出来的图像更加丰富,表现力也更强。 颜色 我们之前绘制的图像都是蓝色的,这...
  • 在实践中,经常需要在一张画布上绘制个图形,subplot 函数便是 matplotlib 的 pyplot 模块中用于绘制多图的函数。其调用格式如下: subplot(nrows, ncols, index, **kwargs) subplot(pos, **kwargs) subplot(ax) ...
  • 这个方法网上有很blog,但是问题是它使用的函数在新版的matplotlib里已经没了(可能换名字了,我也没查)。不过还是转载过来一下。转自:原blog 1.1.曲线拟合 使用scipy库可以拟合曲线. 没拟合的...
  • 如果你需要同条曲线根据不同部位选择不同的颜色来显示,那么就需要看一下这个例子。如下: 这个图里,每条曲线根据曲线的导数来选择不同的颜色显示,相同导数,也就是说明相同的曲率部分就会是一样的颜色。 ...
  • 线图可以被用来可视化矢量场的流态。如科学和自然学科中的磁场、万有引力和流体运动等均可以用流线图表示。矢量场通过为每个点指定个线条和个或个箭头的...这时就需要使用matplotlib来画这样的流线图了。 .
  • 画出两个函数y1 = x1,y2 = x2 ** 0.5在范围{ (x1,y1) | 1 <= x <= 2, x1 ** 0.5 <= y <...import matplotlib.pyplot as plt import numpy as np x = range(1,6,1) y = range(1,6,1) x1.
  • Python matplotlib绘制折线

    千次阅读 2020-11-01 22:10:31
    Python matplotlib绘制折线
  • Matplotlib在一张画布上画的两种方法,plt.subplot,plt.subplots。 目录回顾plt.subplots()画法plt.subplot()画法保存 回顾 之前也用过plt.subplots()在一张上画过,今天看到用plt.subplot()的画法想...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 41,052
精华内容 16,420
关键字:

matplotlib一图多线