Python工具集之数据可视化包Matplotlib(一)



Table of Contents

 

 

 

 

 

 

 

Python开发工具集之可视化包Matplotlib

  • matplotlib是常用的Python的2D绘图包,可以对Python中的数据进行快速可视化,并以多种格式输出
  • 在matplotlib面向对象的绘图库中,pyplot是一个很好的API
  • pyplot与pylab的功能基本相同,pyplab包含许多NumPy和pyplot模块中常用的函数,十分适合在IPython交互式环境中使用
  • Pylab combines pyplot with numpy into a single namespace. This is convenient for interactive work, but for programming it is recommended that the namespaces be kept separate.

配置依赖环境

导入依赖模块

import matplotlib
import matplotlib.pyplot as plt
import numpy as np
# import pandas as pd
# from pandas import Series, DataFrame

导入中文依赖模块

from matplotlib.font_manager import *
# 解决中文显示问题
# 使用场景:在text()、label()、title()中添加:fontproperties=myfont
myfont = FontProperties(fname='/usr/share/fonts/truetype/arphic/ukai.ttc')
# 解决不显示负号的问题
matplotlib.rcParams['axes.unicode_minus'] = False
# 解决 cannot find sans-serif family 问题
from matplotlib import rcParams
rcParams.update({    
    'font.family':'sans-serif',
    'font.sans-serif':['Liberation Sans'],
    })
# 解决图例中文显示问题,配置:plt.legend(prop=chinese)
chinese = matplotlib.font_manager.FontProperties(
      fname='/usr/share/fonts/truetype/arphic/ukai.ttc'
    , size=14
)
# 有时配置后需要清除一下缓存才能正确显示
# rm -rf ~/.matplotlib/*.cache

基础制图

  • matplotlib提供了很多常用属性值
  • figure大小和像素
  • line的宽度、颜色和样式
  • axes、axis和grid属性
  • 文本和字体属性
  • ...
  • 本节从基础制图开始
# 先上一副最基本的图表
# 如果仅向plot()命令提供单个列表或数组
# 则matplotlib假定它是一个y值序列
# 并自动生成x值
plt.plot([1, 2, 3, 4])
# 显示图表
plt.show()

 

添加 x, y 值

plt.plot(
      [1,2,3,4]   # x 值(list)
    , [1,4,9,16]  # x 值(list)
)
plt.show()

 

配置图形颜色和形状

plt.plot(
      [1,2,3,4]   # x 值(list)
    , [1,4,9,16]  # x 值(list)
    , 'r.'        # r 表示红色,. 表示圆点
)
plt.show()

 

控制线条属性-使用关键字linewidth

plt.plot(
      [1,2,3,4]      # x 值(list)
    , [1,4,9,16]     # x 值(list)
    , 'k-'           # k 表示黑色,- 表示实线
    , linewidth=0.5  # 线条宽度
)
plt.show()

 

控制线条属性-使用setter方法

t = np.arange(0., 5., 0.2)
line, = plt.plot(
      t                 # x轴series
    , t**2              # y轴series
    , '-'               # 颜色和形状
    , linewidth=5       # 线条宽度
)
line.set_antialiased(False)  # antialised代表字体抗锯齿,False为关闭
plt.show()

 

控制线条属性-使用setp()命令

t = np.arange(0., 10., 0.2)
lines = plt.plot(
    t, t**2,
)
plt.setp(lines, color='b', linewidth=1)
plt.show()

 

添加 x,y 轴的标签 plt.ylabel()

plt.plot(
      [1,2,3,4]      # x 值(list)
    , [1,4,9,16]     # x 值(list)
    , 'k-'           # k 表示黑色,- 表示实线
    , linewidth=1.0  # 线条宽度
)
# 如有中文,配置字体为之前设定的 myfont
# fontsize=14 配置字体大小
plt.ylabel('y 轴标签', fontproperties=myfont, fontsize=14) 
plt.xlabel('x 轴标签', fontproperties=myfont, fontsize=14)
plt.show()

 

将 x,y 轴坐标转换成字符坐标 plt.xticks(), plt.yticks()

# 使用 np.linspace 创建等差数列,三个参数分别代表起止和分隔数
x = np.linspace(-4, 4, 50)
y = np.cos(x)

# 作图 
plt.plot(x, y)

# 使用 ticks 将相应坐标数转换成字符坐标
plt.xticks(
      [-np.pi, -np.pi/2, 0, np.pi/2, np.pi]               # x 配置坐标刻度线
    , ['$-\pi$', '$-\pi/2$',  '$0$', '$\pi/2$','$\pi$']   # x 配置坐标刻度线对应的显示文本
    , fontsize=14
) 
plt.yticks(
      [-1, 0, 1]                                          # y 配置坐标刻度线
    , ['- one','zero','+ one']                            # y 配置坐标刻度线对应的显示文本
    , fontsize=14
)

plt.show()
posted @ 2021-02-07 23:22  涛子17180  阅读(170)  评论(0编辑  收藏  举报