精华内容
下载资源
问答
  • python 折线图绘制

    2019-08-08 11:21:17
    利用plt中plot绘制折线图的代码 import pandas as pd import os os.chdir("C:\\Users\Administrator.LAPTOP-1HM8PV0L\Desktop\论文\论文数据\描述性统计分析") table=pd.read_table("全国层面泰尔指数、indl1、indl2...

    利用plt中plot绘制折线图的代码

    import pandas as pd
    import os
    os.chdir("C:\\Users\Administrator.LAPTOP-1HM8PV0L\Desktop\论文\论文数据\描述性统计分析")
    table=pd.read_table("全国层面泰尔指数、indl1、indl2.csv",sep=',',engine="python",header='infer')
    
    x=table.iloc[:,0]
    y1=table.iloc[:,1]
    y2=table.iloc[:,2]
    y3=table.iloc[:,3]
    
    
    import numpy as np
    import pandas as pd
    import seaborn as sns
    import matplotlib.pyplot as plt
    
    plt.figure(figsize=(12,4))
    plt.rcParams['font.sans-serif']=['simHei']
    plt.rcParams['axes.unicode_minus']=False
    """
    c  青红(cyan)	  r  红色(red)	m  品红(magente)	g  绿色(green) 
    y  黄色(yellow)	k  黑色(black)	w  白色(white)	b 蓝色(blue)
    ms:控制线条的宽度
    linewidth:控制线条的宽度
    color:颜色
    marker:端点模式,. * 'o'等形式
    """
    
    ax1=plt.subplot(1,3,1)
    ax1.plot(x, y1,marker='.',color='b',ms=10,linewidth=2)
    ax1.set_title("全国泰尔指数趋势图")
    ax1.set(xlabel="年份",xticks=range(2001,2017,3))
    
    ax2=plt.subplot(1,3,2)
    ax2.plot(x, y2,marker='.',color='r',ms=10,linewidth=2)
    ax2.set_title("全国产业结构层次系数趋势图")
    ax2.set(xlabel="年份",xticks=range(2001,2017,3))
    
    ax3=plt.subplot(1,3,3)
    ax3.plot(x, y3,marker='.',color='m',ms=10,linewidth=2)
    ax3.set_title("全国产业结构质量系数趋势图")
    ax3.set(xlabel="年份",xticks=range(2001,2017,3))
    
    展开全文
  • 折线图

    1.简单的折线图

    对于图表来说,最简单的莫过于作出一个单一函数 的图像。本节中我们首先来介绍创建这种类型图表。本节和后续小节中,我们都会使用下面的代码将我们需要的包载入到 notebook 中:

    %matplotlib inline
    import matplotlib.pyplot as plt
    plt.style.use('seaborn-whitegrid')
    import numpy as np
    

    对于所有的 Matplotlib 图表来说,我们都需要从创建图形和维度开始。图形和维度可以使用下面代码进行最简形式的创建:

    fig = plt.figure()
    ax = plt.axes()
    

    在这里插入图片描述
    在 Matplotlib 中,图形(类plt.Figure的一个实例)可以被认为是一个包括所有维度、图像、文本和标签对象的容器。维度(类plt.Axes的一个实例)就是你上面看到的图像,一个有边界的格子包括刻度和标签,最终还有我们画在上面的图表元素。在本书中,我们会使用变量名fig来指代图形对象,以及变量名ax来指代维度变量。

    一旦我们创建了维度,我们可以使用ax.plot方法将数据绘制在图表上。下面是一个简单的正弦函数图形:

    fig = plt.figure()
    ax = plt.axes()
    
    x = np.linspace(0, 10, 1000)
    ax.plot(x, np.sin(x));
    

    在这里插入图片描述

    同样的,我们可以使用 pylab 接口(MATLAB 风格的接口)帮我们在后台自动创建这两个对象:

    plt.plot(x, np.sin(x));
    

    在这里插入图片描述
    如果我们需要在同一幅图形中绘制多根线条,只需要多次调用plot函数即可:

    plt.plot(x, np.sin(x))
    plt.plot(x, np.cos(x));
    

    在这里插入图片描述

    a.调整折线图:线条颜色和风格

    你可能第一个想到需要进行调整的部分就是线条的颜色和风格。plt.plot()函数接受额外的参数可以用来指定它们。通过指定color关键字参数可以调整颜色,这个字符串类型参数基本上能用来代表任何你能想到的颜色。可以通过多种方式指定颜色参数:

    所有 HTML 颜色名称可以在这里[3]找到。

    plt.plot(x, np.sin(x - 0), color='blue')        # 通过颜色名称指定
    plt.plot(x, np.sin(x - 1), color='g')           # 通过颜色简写名称指定(rgbcmyk)
    plt.plot(x, np.sin(x - 2), color='0.75')        # 介于0-1之间的灰阶值
    plt.plot(x, np.sin(x - 3), color='#FFDD44')     # 16进制的RRGGBB值
    plt.plot(x, np.sin(x - 4), color=(1.0,0.2,0.3)) # RGB元组的颜色值,每个值介于0-1
    plt.plot(x, np.sin(x - 5), color='chartreuse'); # 能支持所有HTML颜色名称值
    

    在这里插入图片描述
    如果没有指定颜色,Matplotlib 会在一组默认颜色值中循环使用来绘制每一条线条。

    类似的,通过linestyle关键字参数可以指定线条的风格:

    plt.plot(x, x + 0, linestyle='solid')
    plt.plot(x, x + 1, linestyle='dashed')
    plt.plot(x, x + 2, linestyle='dashdot')
    plt.plot(x, x + 3, linestyle='dotted');
    
    # 还可以用形象的符号代表线条风格
    plt.plot(x, x + 4, linestyle='-')  # 实线
    plt.plot(x, x + 5, linestyle='--') # 虚线
    plt.plot(x, x + 6, linestyle='-.') # 长短点虚线
    plt.plot(x, x + 7, linestyle=':');  # 点线
    

    在这里插入图片描述
    如果你喜欢更简洁的代码,这些linestyle和color参数能够合并成一个非关键字参数,传递给plt.plot()函数:

    plt.plot(x, x + 0, '-g')  # 绿色实线
    plt.plot(x, x + 1, '--c') # 天青色虚线
    plt.plot(x, x + 2, '-.k') # 黑色长短点虚线
    plt.plot(x, x + 3, ':r');  # 红色点线
    

    在这里插入图片描述
    上面的单字母颜色码是 RGB 颜色系统以及 CMYK 颜色系统的缩写,被广泛应用在数字化图像的颜色系统中。

    还有很多其他的关键字参数可以对折线图的外观进行精细调整;可以通过在 IPython 中使用帮助工具查看plt.plot()函数的文档来获得更多细节内容。

    b.调整折线图:坐标轴范围

    Matplotlib 会自动选择非常合适的坐标轴范围来绘制你的图像,但是有些情况下你也需要自己进行相关调整。使用plt.xlim()和plt.ylim()函数可以调整坐标轴的范围:

    plt.plot(x, np.sin(x))
    
    plt.xlim(-1, 11)
    plt.ylim(-1.5, 1.5);
    

    在这里插入图片描述
    如果某些情况下你希望将坐标轴反向,你可以通过上面的函数实现,将参数顺序颠倒即可:

    plt.plot(x, np.sin(x))
    
    plt.xlim(10, 0)
    plt.ylim(1.2, -1.2);
    

    在这里插入图片描述
    相关的函数还有plt.axis()(注意:这不是plt.axes()函数,函数名称是 i 而不是 e)。这个函数可以在一个函数调用中就完成 x 轴和 y 轴范围的设置,传递一个[xmin, xmax, ymin, ymax]的列表参数即可:

    plt.plot(x, np.sin(x))
    plt.axis([-1, 11, -1.5, 1.5]);
    

    在这里插入图片描述
    当然plt.axis()函数不仅能设置范围,还能像下面代码一样将坐标轴压缩到刚好足够绘制折线图像的大小:

    plt.plot(x, np.sin(x))
    plt.axis('tight');
    

    在这里插入图片描述
    还可以通过设置’equal’参数设置x轴与y轴使用相同的长度单位:

    plt.plot(x, np.sin(x))
    plt.axis('equal');
    

    在这里插入图片描述

    更多关于设置 axis 属性的内容请查阅plt.axis函数的文档字符串。

    c.折线图标签

    本节最后介绍一下在折线图上绘制标签:标题、坐标轴标签和简单的图例。

    标题和坐标轴标签是最简单的这类标签,Matplotlib 提供了函数用来方便的设置它们:

    plt.plot(x, np.sin(x))
    plt.title("A Sine Curve")
    plt.xlabel("x")
    plt.ylabel("sin(x)");
    

    在这里插入图片描述
    这些标签的位置、大小和风格可以通过上面函数的可选参数进行设置。参阅 Matplotlib 在线文档和这些函数的文档字符串可以获得更多的信息。

    当一幅图中绘制了多条折线时,如果能够绘制一个线条对应的图例能让图表更加清晰。Matplotlib 也内建了函数来快速创建图例。估计你也猜到了,通过plt.legend()函数可以实现这个需求。虽然有很多种正确的方法来指定图例,作者认为最简单的方法是通过在绘制每条线条时指定对应的label关键字参数来使用这个函数:

    plt.plot(x, np.sin(x), '-g', label='sin(x)')
    plt.plot(x, np.cos(x), ':b', label='cos(x)')
    plt.axis('equal')
    
    plt.legend();
    

    在这里插入图片描述
    上图可见,plt.legend()函数绘制的图例线条与图中的折线无论风格和颜色都保持一致。查阅plt.legend文档字符串可以获得更多相关信息;

    额外内容:Matplotlib 的坑

    虽然大多数的plt函数都可以直接转换为ax的方法进行调用(例如plt.plot() → ax.plot(),plt.legend() → ax.legend()等),但是并不是所有的命令都能应用这种情况。特别是用于设置极值、标签和标题的函数都有一定的改变。下表列出了将 MATLAB 风格的函数转换为面向对象的方法的区别:

    • plt.xlabel() → ax.set_xlabel()
    • plt.ylabel() → ax.set_ylabel()
    • plt.xlim() → ax.set_xlim()
    • plt.ylim() → ax.set_ylim()
    • plt.title() → ax.set_title()

    在面向对象接口中,与其逐个调用上面的方法来设置属性,更常见的使用ax.set()方法来一次性设置所有的属性:

    ax = plt.axes()
    ax.plot(x, np.sin(x))
    ax.set(xlim=(0, 10), ylim=(-2, 2),
           xlabel='x', ylabel='sin(x)',
           title='A Simple Plot');
    

    在这里插入图片描述

    展开全文
  • 主要介绍了Python散点图与折线图绘制过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
  • python折线图绘制体验

    千次阅读 2017-11-05 21:46:08
    上一篇“python之初体验”中我们主要是实现了抓取csdn...说到关系和趋势可能再多的语言都显得苍白无力了,所以图表可能是最好的一种方式,今天要实现的功能就是在python中通过绘制折线图来表名日期和阅读数量的关系。

             上一篇“python之初体验”中我们主要是实现了抓取csdn本人博客列表页面的每一篇博客的阅读数量和标题功能,后来就想我们是有了数量和title,可是我还想要是知道我的每篇阅读数量和日期之间的关系就好了,以及每篇博客的阅读趋势,说到关系和趋势可能再多的语言都显得苍白无力,所以图表可能是最好的一种表现形式,今天要实现的功能就是在python中通过绘制折线图来表明日期和阅读数量的关系。

             当然代码是可以复用的,之前的爬取代码我们直接拿过来用就好了,本质上是只需要将我们爬取的数据展示在折线图上面就好了,python中画图常用的就是matplotlib了,当然这个属于第三方模块,需要安装,如果不安装直接导包是会失败的,当然安装就很简单了,这里就不多介绍了。下面是我们代码的完整实例。

             

    #!usr/bin/python
    # -*- coding: utf-8 -*-
    
    '''
    使用python爬取csdn个人博客的访问量,并用折线图展示出来时间和阅读数目的关系
    '''
    
    import urllib2
    import re
    from bs4 import BeautifulSoup;
    
    #当前的博客列表页号
    from http import ResponseUtils
    # 导入画图需要的库
    from pylab import *
    
    page_num = 1
    notLast = 1;
    # account = str(raw_input('输入csdn的登录账号:'))
    account = 'submit66'
    allTitleList = [];
    allViewList = [];
    
    while notLast:
    
        #首页地址
        baseUrl = 'http://blog.csdn.net/'+account
        #连接页号,组成爬取的页面网址
        myUrl = baseUrl+'/article/list/'+str(page_num)
    
        #伪装成浏览器访问,直接访问的话csdn会拒绝
        user_agent = 'Mozilla/4.0 (compatible; MSIE 5.5; Windows NT)'
        headers = {'User-Agent': user_agent}
        #构造请求
        req = urllib2.Request(myUrl, headers=headers);
    
        #访问页面
        myResponse = urllib2.urlopen(req)
        myPage = ResponseUtils.OutResponse().getResponse(myResponse);
    
        #在页面中查找是否存在‘尾页’这一个标签来判断是否为最后一页,如果没有则代表是最后一页了
        pattern = re.compile('尾页</a>');
        notLast = pattern.findall(myPage, re.S);
    
        soup = BeautifulSoup(myPage, 'lxml');
        # 使用beautifulsoup来解析html
        titleList = soup.find_all('span', class_='link_postdate');
        # 使用beautifulsoup来解析html
        viewList = soup.find_all('span', class_='link_view');
        allTitleList.extend(titleList);
        allViewList.extend(viewList);
    
        #页号加1
        page_num = page_num + 1;
    
    # ----------------循环结束渠道数据,下面是为了绘图准备数据,并且对数据做加工-----------------
    # 将数据结果顺序反转,因为之前是倒序排列,我们需要的时间是从前到后的
    allTitleList.reverse();
    allViewList.reverse();
    
    # 声明两个数组,存储的即为x、y轴的值
    xValues = [];
    yValues = [];
    # 通过循环给存储x和y轴坐标值的list赋值
    for n in range(len(allViewList)):
        xvalue = allViewList[n].contents[1].encode('utf-8'); # 取出阅读数量数据
        yvalue = allTitleList[n].get_text().encode('utf-8'); # 取出阅读日期数据
        yValues.append(xvalue[1:len(xvalue)-1]) # 因为去除的阅读数是带()的,所以我们需要截取,对于字符串的截取就相当于截取数组
        xValues.append(yvalue) # 将阅读数量放在list中
        # 打印输出我们的数据
        print '阅读数量:%s   日期:%s' % (yValues[n], xValues[n]);
    
    # --------------下面是开始绘图部分--------------
    
    # 这行代码是设置中文字体可以展示,否则将会报错
    mpl.rcParams['font.sans-serif'] = ['SimHei']
    x = range(len(xValues))
    plt.plot(x, yValues, marker='o', mec='r', mfc='w', label=u'x时间和y阅读数关系折线图')
    plt.legend()  # 让图例生效
    # 可以看到x和y 设置的方式是不同的,因为x轴可能只是一个名称,一个分类,而不是一个具体的数值,所以通过这种方式来做了,而对于y则是要具体展示的数值
    plt.xticks(x, xValues, rotation=45) # 这里的rotation,当名称展示时候,一个倾斜的角度,当文案很长时候特别好用
    plt.margins(0) # 这个不设置的话,折线的开始和结束出会有间距
    plt.subplots_adjust(bottom=0.27) # 设置折线图和底部区域的距离
    plt.xlabel(u"time(s)阅读日期") #X轴标签
    plt.ylabel(u"阅读数量(次)") #Y轴标签
    plt.title(u"阅读数量趋势图") #标题
    # 展示图表对话框
    plt.show()

            其实,上面的代码写的还是蛮清楚的,相比之前的代码,就是需要导入pylab模块,里面自然是包含了matplotlib的了,之前代码还是爬取的,一变的是之前我们抓取的是阅读数量和博客title,现在是阅读数量和每篇博客创建时间,二是将阅读数量和阅读日期分别放在了list中方便下面使用。然后第二部分就是将数据做整合,即为绘图准备x和y轴的值,两者均放在一个list里面,两个list的数量是一致的,否则是会报错的。第三部分则是绘图部分,首先是设置了绘图可以正确展示中文,其次是将x和y轴的数据给了绘图实例,然后让绘图实例生效,因为我们的x轴只是一个名称展示,这里即为日期展示,所以不能像y轴那样子直接把值塞进去,所以下面调用了xticks方法进行了特殊处理,下面又设置了x和y轴标签,即x和y轴分别代表什么了。最后就是我们的图表的show(秀)啦。让我们看看最终效果图吧:

               嗯,看起来貌似还不错,不过最近的阅读数量有点低呀,尴尬啦。有人会问上面的xticks方法的rotation是干嘛的,就是让我们的x轴数值逆时针旋转45度呀,你看我们的x轴的每个数值都那么长,如果不旋转肯定覆盖了呀,还有subplots_adjust这个方法是设置绘图区域和上下左右之间的距离的,特别是底部的,如果不设置的话,那么长的文案是会被下面的菜单栏覆盖的哦,然后我们再说说plot这个方法的几个参数的意思,前两个就是x和y轴的数据了,第三个就是设置上图的红圈即为标记点了,第四个参数是设置标记点的颜色,上面r代表红色,你换成g就是绿色了,如果不设置的话,默认是蓝色。第五个参数就是设置标记点是否是实心,如果mfc不设置的话就是实心的,最后一个参数就是折线图的实例和说明了。

               基本上内容就这么多,如果有不对之处,欢迎批评指正。

    展开全文
  • 这篇文章主要介绍了Python散点图与折线图绘制过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下在数据分析的过程中,经常需要将数据可视化,目前常使用的...

    这篇文章主要介绍了Python散点图与折线图绘制过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

    在数据分析的过程中,经常需要将数据可视化,目前常使用的:散点图 折线图

    需要import的外部包 一个是绘图 一个是字体导入

    import matplotlib.pyplot as plt

    from matplotlib.font_manager import FontProperties

    在数据处理前需要获取数据,从TXT XML csv excel 等文本中获取需要的数据,保存到list

    def GetFeatureList(full_path_file):

    file_name = full_path_file.split('\')[-1][0:4]

    # print(file_name)

    # print(full_name)

    K0_list = []

    Area_list = []

    all_lines = []

    f = open(full_path_file,'r')

    all_lines = f.readlines()

    lines_num = len(all_lines)

    # 数据清洗

    if lines_num > 5000:

    for i in range(3,lines_num-1):

    temp_k0 = int(all_lines[i].split(' ')[1])

    if temp_k0 == 0:

    K0_list.append(ComputK0(all_lines[i]))

    else:

    K0_list.append(temp_k0)

    Area_list.append(float(all_lines[i].split(' ')[15]))

    # K0_Scatter(K0_list,Area_list,file_name)

    else:

    print('{} 该样本量少于5000'.format(file_name))

    return K0_list, Area_list,file_name

    绘制两组数据的散点图,同时绘制两个散点图,上下分布在同一个图片中

    def K0_Scatter(K0_list, area_list, pic_name):

    plt.figure(figsize=(25, 10), dpi=300)

    # 导入中文字体,及字体大小

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

    ax = plt.subplot(211)

    # print(K0_list)

    ax.scatter(range(len(K0_list)), K0_list, c='r', marker='o')

    plt.title(u'散点图', fontproperties=zhfont)

    plt.xlabel('Sampling point', fontproperties=zhfont)

    plt.ylabel('K0_value', fontproperties=zhfont)

    ax = plt.subplot(212)

    ax.scatter(range(len(area_list)), area_list, c='b', marker='o')

    plt.xlabel('Sampling point', fontproperties=zhfont)

    plt.ylabel(u'大小', fontproperties=zhfont)

    plt.title(u'散点图', fontproperties=zhfont)

    # imgname = 'E:\' + pic_name + '.png'

    # plt.savefig(imgname, bbox_inches = 'tight')

    plt.show()

    散点图显示

    2019113083850151.png?2019103083947

    绘制一个折线图 每个数据增加标签

    def K0_Plot(X_label, Y_label, pic_name):

    plt.figure(figsize=(25, 10), dpi=300)

    # 导入中文字体,及字体大小

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

    ax = plt.subplot(111)

    # print(K0_list)

    ax.plot(X_label, Y_label, c='r', marker='o')

    plt.title(pic_name, fontproperties=zhfont)

    plt.xlabel('coal_name', fontproperties=zhfont)

    plt.ylabel(pic_name, fontproperties=zhfont)

    # ax.xaxis.grid(True, which='major')

    ax.yaxis.grid(True, which='major')

    for a, b in zip(X_label, Y_label):

    str_label = a + str(b) + '%'

    plt.text(a, b, str_label, ha='center', va='bottom', fontsize=10)

    imgname = 'E:\' + pic_name + '.png'

    plt.savefig(imgname, bbox_inches = 'tight')

    # plt.show()

    2019113083850152.png?2019103083947

    绘制多条折线图

    def K0_MultPlot(dis_name, dis_lsit, pic_name):

    plt.figure(figsize=(80, 10), dpi=300)

    # 导入中文字体,及字体大小

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

    ax = plt.subplot(111)

    X_label = range(len(dis_lsit[1]))

    p1 = ax.plot(X_label, dis_lsit[1], c='r', marker='o',label='Euclidean Distance')

    p2 = ax.plot(X_label, dis_lsit[2], c='b', marker='o',label='Manhattan Distance')

    p3 = ax.plot(X_label, dis_lsit[4], c='y', marker='o',label='Chebyshev Distance')

    p4 = ax.plot(X_label, dis_lsit[5], c='g', marker='o',label='weighted Minkowski Distance')

    plt.legend()

    plt.title(pic_name, fontproperties=zhfont)

    plt.xlabel('coal_name', fontproperties=zhfont)

    plt.ylabel(pic_name, fontproperties=zhfont)

    # ax.xaxis.grid(True, which='major')

    ax.yaxis.grid(True, which='major')

    for a, b,c in zip(X_label, dis_lsit[5],dis_name):

    str_label = c + '_'+ str(b)

    plt.text(a, b, str_label, ha='center', va='bottom', fontsize=5)

    imgname = 'E:\' + pic_name + '.png'

    plt.savefig(imgname,bbox_inches = 'tight')

    # plt.show()

    2019113083850153.png?2019103083947

    图形显示还有许多小技巧,使得可视化效果更好,比如坐标轴刻度的定制,网格化等

    以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

    展开全文
  • 今天教大家用python绘制一些线性图案,需要的朋友可以借鉴参考一下。画最简单的直线代码如下:import numpy as npimport matplotlib.pyplot as pltx=[0,1]y=[0,1]plt.figure()plt.plot(x,y)plt.savefig("...
  • matplotlib简介matplotlib 是python最著名的绘图库,它提供了一整套和matlab相似的命令API...因此如果你需要绘制某种类型的,只需要在这个页面中浏览/复制/粘贴一下,基本上都能搞定。在Linux下比较著名的数据工...
  • Matplotlib是一个Python工具箱,用于科学计算的数据可视化。借助它,Python可以绘制如Matlab和Octave多种多样的数据...下面这篇文章主要介绍了python使用matplotlib如何绘制折线图的方法教程,需要的朋友可以参考借鉴。
  • python绘制折线图示例

    万次阅读 2016-04-27 09:52:49
    python绘制折线图示例
  • Python的可视化工具有很多,数不胜数,各有优劣。本文就对其中的pylab进行介绍。之所以介绍这一款,是因为它和Matlab的强烈相似度,如果你使用过Matlab,那么相信pylab你也会很快上手。简单的plot函数pylab绘图,最...
  • func:折线图绘制 """ import matplotlib.pyplot as plt # 显示中文 plt.rcParams['font.sans-serif'] = ['SimHei'] plt.rcParams['axes.unicode_minus'] = False # 列表 years=[] score=[] # 打开...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,424
精华内容 569
关键字:

python折线图绘制

python 订阅