データ解析(II)

matplotlibの概要

  matplotlibのは、Pythonライブラリの図です。グラフィックスの品質レベルを簡単に描画することができ、公開するために使用します。

基本的な機能をmatplotlibの

  基本図(実線で描かれた二次元平面座標系)

  1.線スタイル、線幅と色を設定します。

インポートNP AS numpyの
 インポートMP AS matplotlib.pyplot 

<シーケンス>水平座標シリーズ:Xarray 
#1 yarray <シーケンス>垂直座標シーケンス
mp.plot(Xarray、yarray)
 #1 を示すグラフ 
mp.showを()

 

  (1)線グラフ、垂直/水平線を描画します

インポートNP AS numpyの
 インポートMP AS matplotlib.pyplot 

縦垂直線が描かれ 
mp.vlines(VVAL、値Ymin、Ymaxの)#1 列位置、Y座標開始し、終了のY座標水平描画horizo​​tal 
mp.hlinesを(XVAL、XMIN、XMAX )#1 行位置、座標xの出発点は、端部のX座標
#を示すグラフ 
(mp.show)を

 

 

 

基本的な描画

インポートNP AS numpyの
 インポートMP AS matplotlib.pyplot 

Xarray = np.arange(8 
yarray = np.array([64,89,12,36,49,80,45,34 ])
線グラフ
MP .PLOT(Xarray、yarray)
、水平描画 
mp.hlines(40,1,7 #1 mp.hlines([10,20,30,50]、1,7) 
mp.hlines([10,20,30を、 50]、[1,2,4,5]、[7,5,4,3])#1 ラインの終了位置の開始位置の位置垂直線が描かれ 
mp.vlines(4,20,80 
mp.show()

  (2)正弦曲線、コサインカーブを描きます

をlineStyleの:リニア「 - 」「 - 」「:」「.-」
#の線幅:幅
        デジタルカラー:<キーワードパラメータ>色
        英語の単語の色や色の一般的な英語の単語やイニシャルまたは#495434 (1,1,1)又は(1,1,1,1) アルファ<キーワードパラメータ>透明
        浮動小数点値 
mp.plot(Xarray、yarray、をlineStyle = '' 線幅など= 1、色= ' '、アルファ= 0.5)

 

 

インポートnumpyのNP AS
 インポートMPのAS matplotlib.pyplot 

#は正弦波のSiNを描く= Y(X) 
X = np.linspace(-np.pi、np.pi 1000 
のSiNx = np.sin(X)
余弦曲線Yを描きますCOS =(X)/ 2 
cosx = np.cos(X)/ 2 

mp.plot(X、のSiNx)
mp.plot(X、cosx)

mp.show()

 

  2.軸座標範囲

X_limt_min:<a float> X軸レンジ最小x_limit_max:<a float> X軸最大値
mp.xlim(x_limt_min、x_limit_max)
 #1 y_limt_min:<aのfloat> Y軸範囲の最小
#1 y_limit_max:<aのfloat> Y軸範囲最大 
mp.ylim(y_limt_min、y_limit_max)

 

 

インポートnumpyのNP AS
 インポートMPのAS matplotlib.pyplot 

#は正弦波のSiNを描く= Y(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、+ 0.1 np.pi 
mp.ylim(0、 1 + 0.1 
mp.plot(X、 SiNx)
mp.plot(X、cosx)
mp.show()



 

  スケールの座標セット3

X_val_list:X軸スケール値シーケンス
#1 x_text_list:配列X軸スケールラベルテキスト[オプション] 
mp.xticks(x_val_list、x_text_list)
 #1 y_val_list:Y軸のスケール値シーケンス
#1 y_text_list:配列Y軸スケールラベルテキスト[任意] 
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. 简单动画

おすすめ

転載: www.cnblogs.com/maplethefox/p/11448701.html