Data Analysis (II)

matplotlib Overview

  matplotlib is a drawing of python library. Use it to publish quality level of graphics can be easily drawn.

matplotlib basic functions

  Basic drawing (drawn in continuous line a two-dimensional plane coordinate system)

  1. Set the line style, line width and color

Import numpy AS NP
 Import matplotlib.pyplot AS MP 

# Xarray: <sequence> horizontal coordinate series 
# yarray: <sequence> vertical coordinate sequence 
mp.plot (Xarray, yarray)
 # graph showing 
mp.show ()

 

  (1) drawing a line graph, the horizontal / vertical line

Import numpy AS NP
 Import matplotlib.pyplot AS MP 

# Vertical perpendicular line is drawn 
mp.vlines (VvaL, Ymin, Ymax) # column position, starting coordinate y, end coordinate Y 
# horizotal draw a horizontal 
mp.hlines (xval, xmin, xmax ) # row position, the starting point of coordinates x, end coordinate X 
# graph showing 
mp.show ()

 

 

 

# Basic drawing 

Import numpy AS NP
 Import matplotlib.pyplot AS mp 

Xarray = np.arange (. 8 ) 
yarray = np.array ([64,89,12,36,49,80,45,34 ])
 # line graph 
mp .plot (Xarray, yarray)
 # draw a horizontal 
mp.hlines (40,1,7 )
 # mp.hlines ([10,20,30,50], l, 7) 
mp.hlines ([10,20,30, 50], [1,2,4,5], [7,5,4,3]) # position of the starting position of the end position of the line 
# perpendicular line is drawn 
mp.vlines (4,20,80 ) 
mp.show ()

  (2) drawing a sine curve, cosine curve

# Of the lineStyle: linear "-" "-" ":" ".-" 
# linewidth: width 
    #     Digital 
# Color: <keyword parameter> Color 
    #     English word color or color common English words or initials or # 495434 (1,1,1) or (1,1,1,1) 
# Alpha: <keyword parameter> transparency 
    #     floating point values 
mp.plot (Xarray, yarray, lineStyle = '' , as linewidth =. 1, Color = ' ' , Alpha = 0.5)

 

 

Import numpy AS NP
 Import matplotlib.pyplot AS MP 

# draw sinusoidal SiN = y (X) 
X = np.linspace (-np.pi, np.pi, 1000 ) 
SiNx = np.sin (X)
 # draw a cosine curve y COS = (X) / 2 
cosx = np.cos (X) / 2 

mp.plot (X, SiNx) 
mp.plot (X, cosx) 

mp.show ()

 

  2. Set the coordinate axis range

# X_limt_min: <a float> X-axis range minimum 
# x_limit_max: <a float> X-axis maximum value 
mp.xlim (x_limt_min, x_limit_max)
 # y_limt_min: <a float> Y-axis range minimum 
# y_limit_max: <a float> Y-axis range maximum 
mp.ylim (y_limt_min, y_limit_max)

 

 

Import numpy AS NP
 Import matplotlib.pyplot AS MP 

# draw sinusoidal SiN = y (X) 
X = np.linspace (-np.pi, np.pi, 1000 ) 
SiNx = np.sin (X)
 # draw a cosine curve y COS = (X) / 2 
cosx = np.cos (X) / 2 # set visible range 
mp.xlim (0, + 0.1 np.pi ) 
mp.ylim (0, . 1 + 0.1 ) 
mp.plot (X, SiNx) 
mp.plot (X, cosx) 
mp.show ()



 

  3. Set the coordinate of the scale

# X_val_list: X axis scale value sequence 
# x_text_list: sequence X axis scale label text [optional] 
mp.xticks (x_val_list, x_text_list)
 # y_val_list: Y-axis scale value sequence 
# y_text_list: sequence Y-axis scale label text [optional] 
mp.yticks (y_val_list, y_text_list)

 

  案例:把横坐标的刻度显示为:0, π/2, π, 3π/2, 2π

import numpy as np
import matplotlib.pyplot as mp

# 绘制正弦曲线  y=sin(x)
x = np.linspace(-np.pi, np.pi, 1000)
sinx = np.sin(x)
# 绘制余弦曲线  y=cos(x) / 2
cosx = np.cos(x) / 2

# 设置刻度文本
vals = [-np.pi, -np.pi/2, 0, np.pi/2, np.pi]
texts = [r'$-\pi$', r'$-\frac{\pi}{2}$', 0,
         r'$\frac{\pi}{2}$', r'$\pi$']
mp.xticks(vals, texts)
mp.yticks([-1.0, -0.5, 0.5, 1])

mp.plot(x, sinx)
mp.plot(x, cosx)

mp.show()

 

  4.设置坐标轴

  坐标轴名:left / right / bottom / top

# 获取当前坐标轴字典,{'left':左轴,'right':右轴,'bottom':下轴,'top':上轴 }
ax = mp.gca()
# 获取其中某个坐标轴
axis = ax.spines['坐标轴名']
# 设置坐标轴的位置。 该方法需要传入2个元素的元组作为参数
# type: <str> 移动坐标轴的参照类型  一般为'data' (以数据的值作为移动参照值)
# val:  参照值
axis.set_position(('data', val))
# 设置坐标轴的颜色
# color: <str> 颜色值字符串
axis.set_color(color)

  案例:设置坐标轴至中心。

#设置坐标轴
ax = mp.gca()
axis_b = ax.spines['bottom']
axis_b.set_position(('data', 0))
axis_l = ax.spines['left']
axis_l.set_position(('data', 0))
ax.spines['top'].set_color('none')
ax.spines['right'].set_color('none')

 

import numpy as np
import matplotlib.pyplot as mp

# 绘制正弦曲线  y=sin(x)
x = np.linspace(-np.pi, np.pi, 1000)
sinx = np.sin(x)
# 绘制余弦曲线  y=cos(x) / 2
cosx = np.cos(x) / 2

# 设置刻度文本
vals = [-np.pi, -np.pi/2, 0, np.pi/2, np.pi]
texts = [r'$-\pi$', r'$-\frac{\pi}{2}$', 0,
         r'$\frac{\pi}{2}$', r'$\pi$']
mp.xticks(vals, texts)
mp.yticks([-1.0, -0.5, 0.5, 1])

# 设置坐标轴(移动)
axis = mp.gca()
axis.spines['top'].set_color('none')
axis.spines['right'].set_color('none')
axis.spines['left'].set_position(('data', 0))
axis.spines['bottom'].set_position(('data', 0))

mp.plot(x, sinx)
mp.plot(x, cosx)

mp.show()

 

  5.图例

  显示两条曲线的图例,并测试loc属性。

# 再绘制曲线时定义曲线的label
# label: <关键字参数 str> 支持LaTex排版语法字符串
mp.plot(xarray, yarray ... label='', ...)
# 设置图例的位置
# loc: <关键字参数> 制定图例的显示位置 (若不设置loc,则显示默认位置)
#     ===============   =============
#    Location String   Location Code
#    ===============   =============
#    'best'            0
#    'upper right'     1
#    'upper left'      2
#    'lower left'      3
#    'lower right'     4
#    'right'           5
#    'center left'     6
#    'center right'    7
#    'lower center'    8
#    'upper center'    9
#    'center'          10
#    ===============   =============
mp.legend(loc='')

 

 

import numpy as np
import matplotlib.pyplot as mp

# 绘制正弦曲线  y=sin(x)
x = np.linspace(-np.pi, np.pi, 1000)
sinx = np.sin(x)
# 绘制余弦曲线  y=cos(x) / 2
cosx = np.cos(x) / 2

# 设置刻度文本
vals = [-np.pi, -np.pi/2, 0, np.pi/2, np.pi]
texts = [r'$-\pi$', r'$-\frac{\pi}{2}$', 0,
         r'$\frac{\pi}{2}$', r'$\pi$']
mp.xticks(vals, texts)
mp.yticks([-1.0, -0.5, 0.5, 1])

# 设置坐标轴(移动)
axis = mp.gca()
axis.spines['top'].set_color('none')
axis.spines['right'].set_color('none')
axis.spines['left'].set_position(('data', 0))
axis.spines['bottom'].set_position(('data', 0))

mp.plot(x, sinx, linestyle='--', linewidth=2,
    color='dodgerblue', alpha=0.8,
    label=r'$y=sin(x)$')
mp.plot(x, cosx, linestyle='-.', linewidth=2,
    color='orangered', alpha=0.8,
    label=r'$y=\frac{1}{2}cos(x)$')

mp.show()

 

  6.特殊点

# xarray: <序列> 所有需要标注点的水平坐标组成的序列
# yarray: <序列> 所有需要标注点的垂直坐标组成的序列
mp.scatter(xarray, yarray, 
           marker='',         #点型 ~ matplotlib.markers
           s=50,             #大小
           edgecolor='',     #边缘色
           facecolor='',    #填充色
           zorder=3            #绘制图层编号 (编号越大,图层越靠上)

 

  案例:绘制当x=π/2时两条曲线上的特殊点。

import numpy as np
import matplotlib.pyplot as mp

# 绘制正弦曲线  y=sin(x)
x = np.linspace(-np.pi, np.pi, 1000)
sinx = np.sin(x)
# 绘制余弦曲线  y=cos(x) / 2
cosx = np.cos(x) / 2

# 设置刻度文本
vals = [-np.pi, -np.pi/2, 0, np.pi/2, np.pi]
texts = [r'$-\pi$', r'$-\frac{\pi}{2}$', 0,
         r'$\frac{\pi}{2}$', r'$\pi$']
mp.xticks(vals, texts)
mp.yticks([-1.0, -0.5, 0.5, 1])

# 设置坐标轴(移动)
axis = mp.gca()
axis.spines['top'].set_color('none')
axis.spines['right'].set_color('none')
axis.spines['left'].set_position(('data', 0))
axis.spines['bottom'].set_position(('data', 0))

mp.plot(x, sinx, linestyle='--', linewidth=2,
    color='dodgerblue', alpha=0.8,
    label=r'$y=sin(x)$')
mp.plot(x, cosx, linestyle='-.', linewidth=2,
    color='orangered', alpha=0.8,
    label=r'$y=\frac{1}{2}cos(x)$')

# 绘制特殊点
xs = [np.pi/2, np.pi/2]
ys = [1, 0]
mp.scatter(xs, ys, marker='o', edgecolor='red',
    facecolor='green', s=100, label='Points',
    zorder=3)

mp.show()

 

  7.备注

# 在图表中为某个点添加备注。包含备注文本,备注箭头等图像的设置。
mp.annotate(
    r'$\frac{\pi}{2}$',            #备注中显示的文本内容
    xycoords='data',            #备注目标点所使用的坐标系(data表示数据坐标系)
    xy=(x, y),                     #备注目标点的坐标
    textcoords='offset points',    #备注文本所使用的坐标系(offset points表示参照点的偏移坐标系)
    xytext=(x, y),                #备注文本的坐标
    fontsize=14,                #备注文本的字体大小
    arrowprops=dict()            #使用字典定义文本指向目标点的箭头样式
)

  arrowprops参数使用字典定义指向目标点的箭头样式

#arrowprops字典参数的常用key
arrowprops=dict(
    arrowstyle='',        #定义箭头样式
    connectionstyle=''    #定义连接线的样式
)

  箭头样式(arrowstyle)字符串如下

============   =============================================
Name           Attrs
============   =============================================
  '-'          None
  '->'         head_length=0.4,head_width=0.2
  '-['         widthB=1.0,lengthB=0.2,angleB=None
  '|-|'        widthA=1.0,widthB=1.0
  '-|>'        head_length=0.4,head_width=0.2
  '<-'         head_length=0.4,head_width=0.2
  '<->'        head_length=0.4,head_width=0.2
  '<|-'        head_length=0.4,head_width=0.2
  '<|-|>'      head_length=0.4,head_width=0.2
  'fancy'      head_length=0.4,head_width=0.4,tail_width=0.4
  'simple'     head_length=0.5,head_width=0.5,tail_width=0.2
  'wedge'      tail_width=0.3,shrink_factor=0.5
============   =============================================

 

  连接线样式(connectionstyle)字符串如下

============   =============================================
Name           Attrs
============   =============================================
  'angle'         angleA=90,angleB=0,rad=0.0
  'angle3'         angleA=90,angleB=0`   
  'arc'            angleA=0,angleB=0,armA=None,armB=None,rad=0.0
  'arc3'         rad=0.0
  'bar'         armA=0.0,armB=0.0,fraction=0.3,angle=None
============   =============================================

 

  案例:为在某条曲线上的点添加备注,指明函数方程与值。

import numpy as np
import matplotlib.pyplot as mp

# 绘制正弦曲线  y=sin(x)
x = np.linspace(-np.pi, np.pi, 1000)
sinx = np.sin(x)
# 绘制余弦曲线  y=cos(x) / 2
cosx = np.cos(x) / 2

#设置可视区间
# mp.xlim(0, np.pi+0.1)
# mp.ylim(0, 1+0.1)

# 设置刻度文本
vals = [-np.pi, -np.pi/2, 0, np.pi/2, np.pi]
texts = [r'$-\pi$', r'$-\frac{\pi}{2}$', 0,
         r'$\frac{\pi}{2}$', r'$\pi$']
mp.xticks(vals, texts)
mp.yticks([-1.0, -0.5, 0.5, 1])
# 移动坐标轴
axis = mp.gca()
axis.spines['top'].set_color('none')
axis.spines['right'].set_color('none')
axis.spines['left'].set_position(('data', 0))
axis.spines['bottom'].set_position(('data', 0))

mp.plot(x, sinx, linestyle='--', linewidth=2,
    color='dodgerblue', alpha=0.8,
    label=r'$y=sin(x)$')
mp.plot(x, cosx, linestyle='-.', linewidth=2,
    color='orangered', alpha=0.8,
    label=r'$y=\frac{1}{2}cos(x)$')

# 绘制特殊点
xs = [np.pi/2, np.pi/2]
ys = [1, 0]
mp.scatter(xs, ys, marker='o', edgecolor='red',
    facecolor='green', s=100, label='Points',
    zorder=3)

# 添加备注信息
mp.annotate(r'$[\frac{\pi}{2},1]$',
            xycoords='data', xy=(np.pi / 2, 1),
            textcoords='offset points', xytext=(30, 30),
            fontsize=14,
            arrowprops=dict(
              arrowstyle='->',
              connectionstyle='angle3'))
mp.annotate(r'$[\frac{\pi}{2},0]$',  # 备注的内容
            xycoords='data',  # 会让你的箭头指向这个点
            xy=(np.pi / 2, 0),  # 备注的坐标点
            textcoords='offset points',  # 你传进去的那个字符串会基于你第一步画出来的那个点的基础上x轴上减30,y轴上减30的位置进行打印。
            xytext=(-60, -60),  # 离原坐标的距离
            fontsize=14,  # 备注字的大小
            arrowprops=dict(
              arrowstyle='->',  # 描绘了箭头的样式
              connectionstyle='angle3'))  # 就是描绘箭头的样式的,例如箭头的一个弧度之类的

mp.legend(loc='best')
mp.show()

 

  1. 图形对象(图形窗口)

    1. 子图

    2. 刻度定位器

    3. 刻度网格线

    4. 半对数坐标

    5. 散点图

    6. 填充

    7. 条形图

    8. 饼图

    9. 等高线图

    10. 热成像图

    11. 极坐标系

    12. 三维曲面

    13. 简单动画

Guess you like

Origin www.cnblogs.com/maplethefox/p/11448701.html