首页 > 代码库 > Mooc数据分析-02数据展示

Mooc数据分析-02数据展示

主要内容是Matplotlib库的基本使用和方法

1 Matplotlib库

1.1 Matplotlib的介绍

  Python优秀的数据可视化第三方库

  数据可视化就是将数据以特定的图形图像的方式展示出来, 使数据更加的直观明了

  范例网站

  Matplotlib库是由各种可视化类构成, 内部结构复杂

  为了简洁使用, 可以使用matplotlib.pyplot这个绘制各类可视化图形的命令子库, 类似于快捷方式的库来简化操作

  导入

import matplotlib.pyplot as plt

    同样plt也是约定俗成的别名

  基本使用

    使用plt.plot(数组)传入数组, 如果只有一个一维数组, 那么数组的值会指定给Y轴, X轴为他们的索引值

    使用plt.ylabel(名字)设置Y轴的名字

    使用plt.savefig(文件名, dpi=dpi的大小)保存图像为图像文件, dpi一般设置为600, 默认是PNG格式保存

    使用plt.show()在IPython中展示生成的图形

    使用plt.axis([x1, x2, y1, y2])可以设置X轴的起点和终点, Y轴的起点和终点

    相关代码如下

import matplotlib.pyplot as pltplt.plot([0, 2, 4, 6, 8], [3, 1, 4, 5, 2])plt.ylabel("Y")plt.axis([-1, 10, 0, 6])plt.savefig("test", dpi=600)plt.show()

    相关结果如下

    技术分享

  pyplot的绘图区域

    使用plt.subplot(nrows, ncols, plot_number)在全局绘图区域中创建一个分区体系, 然后指定在哪个子区域里绘图

    其中nrows表示横向划分多少的区域, ncols表示纵向划分多少的区域, 子区域的标号是从1开始的, 从上到下从左到右依次排序

    另外在数量小的时候, 这三个参数之间的逗号可以去掉

    具体代码如下

import numpy as npimport matplotlib.pyplot as pltdef f(t):    return np.exp(-t) * np.cos(2*np.pi*t)a = np.arange(0.0, 5.0, 0.02)plt.subplot(211)plt.plot(a, f(a))plt.subplot(2,1,2)plt.plot(a, np.cos(2*np.pi*a), ‘r--‘)plt.show()

    具体效果如下

    技术分享

1.2 pyplot的plot()函数

  plot()的具体形式如下:

plt.plot(x, y, format_string, **kwargs)

    x: X轴的数据, 可以是列表或者数组, 可选项, 但是当绘制多条曲线的时候, 各条曲线的x不能省略

    y: Y轴的数据, 列表或数组, 必填项

    format_string: 控制曲线的格式的字符串, 可选项

    **kwargs: 第二组或更多的 (x, y, format_string)

    绘制多条图像

import numpy as npimport matplotlib.pyplot as plta = np.arange(10)plt.plot(a, 1.5*a, a, 2.5*a, a, 3.6*a, a, 4.5*a)plt.show()

    结果为

    ??技术分享

  曲线的格式控制

    format_string由制颜色字符, 风格字符和标记字符组成

    具体有

    技术分享

    技术分享

    技术分享

    更改之前的风格代码

import numpy as npimport matplotlib.pyplot as plta = np.arange(10)plt.plot(a, 1.5*a, ‘go-‘, a, 2.5*a, ‘rx‘, a, 3.6*a, ‘*‘, a, 4.5*a, ‘b-.‘)plt.show()

    效果为

    技术分享

  关于**kwargs

    可以添加更多更详细的参数

    color: 控制颜色, color="green"

    linestyle: 线条风格, linestyle="dashed"

    marker: 标记风格, marker="o", 这三个和前面的format是对应的, 此外还有

    markerfacecolor: 标记的颜色, markerfacecolor="blue"

    markersize: 标记的尺寸, markersize=20

    ...

1.3 pyplot的中文显示

  默认情况下, pyplot并不支持中文字符, 在最开始的折线图中, 如果设置ylabel()为中文, 则在图像中不能正常显示

  要显示中文有种办法

  1) 使用rcParams

    设置其font.family为中文字符

    具体代码如下

import matplotlib.pyplot as pltimport matplotlibmatplotlib.rcParams[‘font.family‘] = ‘SimHei‘ plt.plot([0, 2, 4, 6, 8], [3, 1, 4, 5, 2])plt.ylabel("Y轴坐标")plt.axis([-1, 10, 0, 6])plt.savefig("test", dpi=600)plt.show()

    具体效果

    技术分享

      其中SimHei是黑体

    具体更多参数

    技术分享

    相应的中文字体种类

    技术分享

    参考实例

import numpy as npimport matplotlib.pyplot as pltimport matplotlibmatplotlib.rcParams[‘font.family‘] = ‘FangSong‘ matplotlib.rcParams[‘font.size‘] = 20                  a = np.arange(0.0, 5.0, 0.02)plt.xlabel("X轴: 时间")plt.ylabel("Y轴: 振幅")plt.plot(a, np.cos(2*np.pi*a)+1, ‘r--‘)plt.savefig(‘test2‘, dpi=600)plt.show()

    效果为

  技术分享

  2) 增加 fontproperties属性

    在上述的例子中, 可以在xlabel中增加参数fontproperties来限定显示的字体, 用此来解决中文显示

    具体代码如下

import numpy as npimport matplotlib.pyplot as plt                  a = np.arange(0.0, 5.0, 0.02)plt.xlabel("X轴: 时间", fontproperties="FangSong", fontsize=20)plt.ylabel("Y轴: 振幅", fontproperties="FangSong", fontsize=20)plt.plot(a, np.cos(2*np.pi*a)+1, ‘r--‘)plt.show()

  两种方法的区别就是第一种是全局修改, 第二种是指定修改

  建议使用第二种方法, 但是为了统一可以使用方法一

1.4 pyplot的文本显示

  常见的文本显示函数是

    技术分享

    其中title会在整个图形的正中上放写上文字

  具体实例如下

import numpy as npimport matplotlib.pyplot as plta = np.arange(0.0, 5.0, 0.02)plt.plot(a, np.cos(2*np.pi*a)+2, ‘r--‘)plt.xlabel("X轴: 时间", fontproperties="FangSong", fontsize=15, color=‘green‘)plt.ylabel("Y轴: 振幅", fontproperties="FangSong", fontsize=15)plt.title(r‘正玄波实例$y=cos(2\pi x)$‘, fontproperties="SimHei", fontsize=25)plt.text(2, 3, r‘$\mu=100$‘, fontsize=15)plt.axis([-1, 6, 0, 4])plt.grid(True)plt.savefig(‘test3‘, dpi=600)plt.show()

  效果为

  技术分享

  其中$$这种是LeTeX的语法

  title()第一个参数表示横坐标的位置, 第二个参数是纵坐标的位置

  grid(True)增加网格显示

  关于annotate函数

plt.annotate(s, xy=arrow_crd, xytext=text_crd, arrowprops=dict)

    s: 要注解的字符串

    xy: 箭头所在的位置

    xytext: 文本显示的位置

    arrowprops: 定义了整个箭头显示的属性

  具体代码如下

import numpy as npimport matplotlib.pyplot as plta = np.arange(0.0, 5.0, 0.02)plt.plot(a, np.cos(2*np.pi*a)+2, ‘r--‘)plt.xlabel("X轴: 时间", fontproperties="FangSong", fontsize=15, color=‘green‘)plt.ylabel("Y轴: 振幅", fontproperties="FangSong", fontsize=15)plt.title(r‘正玄波实例$y=cos(2\pi x)$‘, fontproperties="SimHei", fontsize=25)plt.annotate(r"$\mu=100$", xy=(2, 3), xytext=(3, 3.5), arrowprops=dict(        facecolor="black", shrink=0.1, width=2        ))plt.axis([-1, 6, 0, 4])plt.grid(True)plt.savefig(‘test3‘, dpi=600)plt.show()

  效果为

  技术分享

1.5 绘制子绘图区域

 

      

    

    

 

  

    

      

  

    

    

  

 

   

 

Mooc数据分析-02数据展示