|
|
51CTO旗下网站
|
|
移动端

Python 数据科学入门:Matplotlib 基本的自定义

在 Matplotlib 教程中,我们将讨论一些可能的图表自定义。 为了开始修改子图,我们必须定义它们。 我们很快会谈论他们,但有两种定义并构造子图的主要方法。 现在,我们只使用其中一个,但我们会很快解释它们。

作者:流着看看来源:今日头条|2020-03-28 16:04

在 Matplotlib 教程中,我们将讨论一些可能的图表自定义。 为了开始修改子图,我们必须定义它们。 我们很快会谈论他们,但有两种定义并构造子图的主要方法。 现在,我们只使用其中一个,但我们会很快解释它们。

现在,修改我们的graph_data函数:

  1. def graph_data(stock): 
  2.  
  3.     fig = plt.figure() 
  4.     ax1 = plt.subplot2grid((1,1), (0,0))1234 

为了修改图表,我们需要引用它,所以我们将它存储到变量fig。 然后我们将ax1定义为图表上的子图。 我们在这里使用subplot2grid,这是获取子图的两种主要方法之一。 我们将深入讨论这些东西,但现在,你应该看到我们有 2 个元组,它们提供了(1,1)和(0,0)。 1,1表明这是一个 1×1 网格。 然后0,0表明这个子图的『起点』将为0,0。

接下来,通过我们已经编写的代码来获取和解析数据:

  1. stock_price_url = 'http://chartapi.finance.yahoo.com/instrument/1.0/'+stock+'/chartdata;type=quote;range=10y/csv' 
  2. source_code = urllib.request.urlopen(stock_price_url).read().decode() 
  3. stock_data = [] 
  4. split_source = source_code.split('\n'
  5. for line in split_source: 
  6.     split_line = line.split(','
  7.     if len(split_line) == 6: 
  8.         if 'values' not in line and 'labels' not in line: 
  9.             stock_data.append(line) 
  10.  
  11. date, closep, highp, lowp, openp, volume = np.loadtxt(stock_data, 
  12.                                                       delimiter=','
  13.                                                       unpack=True
  14.                                                       converters={0: bytespdate2num('%Y%m%d')})1234567891011121314 

下面,我们这样绘制数据:

  1. ax1.plot_date(date, closep,'-', label='Price')1 

现在,由于我们正在绘制日期,我们可能会发现,如果我们放大,日期会在水平方向上移动。但是,我们可以自定义这些刻度标签,像这样:

  1. for label in ax1.xaxis.get_ticklabels():  
  2.     label.set_rotation(45)12 

这将使标签转动到对角线方向。 接下来,我们可以添加一个网格:

  1. ax1.grid(True)1 

然后,其它东西我们保留默认,但我们也可能需要略微调整绘图,因为日期跑到了图表外面。 记不记得我们在第一篇教程中讨论的configure subplots按钮? 我们不仅可以以这种方式配置图表,我们还可以在代码中配置它们,以下是我们设置这些参数的方式:

  1. plt.subplots_adjust(left=0.09, bottom=0.20, right=0.94, top=0.90, wspace=0.2, hspace=0)1 

现在,为了防止我们把你遗留在某个地方,这里是完整的代码:

  1. import matplotlib.pyplot as plt 
  2. import numpy as np 
  3. import urllib 
  4. import matplotlib.dates as mdates 
  5.  
  6. def bytespdate2num(fmt, encoding='utf-8'): 
  7.     strconverter = mdates.strpdate2num(fmt) 
  8.     def bytesconverter(b): 
  9.         s = b.decode(encoding) 
  10.         return strconverter(s) 
  11.     return bytesconverter 
  12.  
  13.  
  14. def graph_data(stock): 
  15.  
  16.     fig = plt.figure() 
  17.     ax1 = plt.subplot2grid((1,1), (0,0)) 
  18.  
  19.     stock_price_url = 'http://chartapi.finance.yahoo.com/instrument/1.0/'+stock+'/chartdata;type=quote;range=10y/csv' 
  20.     source_code = urllib.request.urlopen(stock_price_url).read().decode() 
  21.     stock_data = [] 
  22.     split_source = source_code.split('\n'
  23.     for line in split_source: 
  24.         split_line = line.split(','
  25.         if len(split_line) == 6: 
  26.             if 'values' not in line and 'labels' not in line: 
  27.                 stock_data.append(line) 
  28.  
  29.     date, closep, highp, lowp, openp, volume = np.loadtxt(stock_data, 
  30.                                                           delimiter=','
  31.                                                           unpack=True
  32.                                                           converters={0: bytespdate2num('%Y%m%d')}) 
  33.  
  34.     ax1.plot_date(date, closep,'-', label='Price'
  35.     for label in ax1.xaxis.get_ticklabels(): 
  36.         label.set_rotation(45) 
  37.     ax1.grid(True)#, color='g', linestyle='-', linewidth=5) 
  38.  
  39.     plt.xlabel('Date'
  40.     plt.ylabel('Price'
  41.     plt.title('Interesting Graph\nCheck it out'
  42.     plt.legend() 
  43.     plt.subplots_adjust(left=0.09, bottom=0.20, right=0.94, top=0.90, wspace=0.2, hspace=0) 
  44.     plt.show() 
  45.  
  46.  
  47. graph_data('TSLA')1234567891011121314151617181920212223242526272829303132333435363738394041424344454647 

结果为:

Python 数据科学入门10:Matplotlib 基本的自定义

【编辑推荐】

  1. 高效使用 Python 可视化工具 Matplotlib
  2. 5种快速易用的Python Matplotlib数据可视化方法
  3. 50种常用的matplotlib可视化,再也不用担心模型背着我乱跑了
  4. Python中常用的可视化工具 Matplotlib 简单入门
【责任编辑:未丽燕 TEL:(010)68476606】

点赞 0
分享:
大家都在看
猜你喜欢

订阅专栏+更多

 敏捷无敌之 Gitlab CI 持续集成

敏捷无敌之 Gitlab CI 持续集成

打破运维与研发壁垒
共5章 | KaliArch

109人订阅学习

秒杀高并发白话实战

秒杀高并发白话实战

主流高并发架构
共15章 | 51CTO崔皓

64人订阅学习

网络排障一点通

网络排障一点通

网络排障及优化调整案例
共20章 | 捷哥CCIE

482人订阅学习

订阅51CTO邮刊

点击这里查看样刊

订阅51CTO邮刊

51CTO服务号

51CTO官微