Python可视化库matplotlib(基础)

主要内容提要:

绘制基本曲线

使用plot函数绘制函数曲线,可以调整plot函数参数配置曲线样式、粗细、颜色、标记等

设置坐标轴

(1.)spines移动坐标轴
(2.)xlim方法设置坐标轴刻度取值范围
(3.)xticks,yticks方法设置x,y轴的刻度标签值
(4.)title方法设置标题,xlabel,ylabel方法设置坐标轴描述

设置图片上的描述

(1.)text方法设置图片上的文字描述和注解
(2.)annotate方法对图片上某个点加注解
(3.)legend方法设置图像图例

可使用如下两种方式: 
1: 在 plt.plot 函数中添加 label 参数后,使用 plt.legend(loc=’up right’) 
2: 不使用参数 label, 直接使用如下命令:

网格线开关plt.grid(True)

图像显示plt.show()

图像保存savefig(‘../ / .png’)

常用图形

(1)曲线图:描绘波动,2个维度matplotlib.pyplot.plot(data) 
(2)灰度图:直方图,1个维度matplotlib.pyplot.hist(data) 
(3)散点图:2个维度数据的关联程度matplotlib.pyplot.scatter(data) 
(4)箱式图:设定上下限,除数据噪声matplotlib.pyplot.boxplot(data) 
(5)饼状图:各类别占比matplotlib.pyplot.pie(data)


声明:本文下述各个代码片段都是独立运行的,其文章里其余代码片段无关。

一幅数据图基本上包括如下结构: 
Data: 数据区,包括数据点\描绘形状 
Axis: 坐标轴,包括X轴\Y轴及其标签、刻度尺及其标签 
Title: 标题,数据图的描述 
Legend: 图例,区分图中包含的多种曲线或不同分类的数据 

其他的还有图形文本 (Text)\注解 (Annotate)等其他描述

一、绘制基本曲线

使用plot函数绘制函数曲线,可以调整plot函数参数配置曲线样式、粗细、颜色、标记等

%matplotlib inline
#图嵌入web窗口jupter notebook中
import numpy as np
import matplotlib.pyplot as plt
from pylab import * # * 代表所有,就是从pylab中导入所有的非私有类,函数,全局变量等。
#准备数据
x=np.arange(0.,10,0.2)
y1=np.cos(x)
y2=np.sin(x)
y3=np.sqrt(x)

plt.rcParams['figure.figsize']=(12,8)#reParams设置图片尺寸
plt.plot(x,y1,color='blue',linewidth=1.5,linestyle='-',marker='.',label=r'$y=cos{x$}')
plt.plot(x,y2,color='green',linewidth=1.5,linestyle='-',marker='*',label=r'$y=sin{x}$')
plt.plot(x,y3,color='m',linewidth=1.5,linestyle='-',marker='x',label=r'$y=\sqrt{x}$')

#color参数设定线颜色
#linewidth参数设定虚线、点化虚线、粗虚线、实线
#marker参数设定在曲线上标记的特殊符号,以区分不同的线段
#label参数和图的legend标号有关
输出:[]

Python可视化库matplotlib(基础)_第1张图片

设置坐标轴

(1.)spines移动坐标轴


%matplotlib inline
import numpy as np
import matplotlib.pyplot as plt
from pylab import *

ax=plt.subplot(111)#设置一个空的图
ax.spines['right'].set_color('none')#设置左边轴线为透明色
ax.spines['top'].set_color('none')

#移动下边边框线,相当于移动X轴
ax.xaxis.set_ticks_position('bottom')#设置水平轴上的坐标刻度轴
ax.spines['bottom'].set_position(('data',0)) #set_position设置轴位置:'center' -> ('axes',0.5);'zero' -> ('data', 0.0;('data',anyvalue)

ax.yaxis.set_ticks_position('left')
ax.spines['left'].set_position(('data',0.1))
Python可视化库matplotlib(基础)_第2张图片

Python可视化库matplotlib(基础)_第3张图片

(2.)xlim方法设置坐标轴刻度取值范围

%matplotlib inline  
import numpy as np
import matplotlib.pyplot as plt
from pylab import *
x=np.arange(0.,10,0.2)
#设置x轴和y轴的取值范围
plt.xlim(x.min()*1.1,x.max()*1.1)
plt.ylim(-1.5,4.2)

Python可视化库matplotlib(基础)_第4张图片

(3.)xticks,yticks方法设置x,y轴的刻度标签值

%matplotlib inline  
import numpy as np
import matplotlib.pyplot as plt
from pylab import *
x=np.arange(0.,10,0.2)
plt.xlim(x.min()*1.1,x.max()*1.1)
plt.ylim(-1.5,4.0)
plt.xticks([2,4,6,8,10],[r'two',r'four',r'six',r'hello',r'10'])
plt.yticks([-1.0,0.0,1.0,2.0,3.0,4.0],[r'bottom',r'0.0',r'1.0',r'2.0',r'3.0',r'4.0'])
([,
  ,
  ,
  ,
  ,
  ],
 )

Python可视化库matplotlib(基础)_第5张图片

(4.)title方法设置标题,xlabel,ylabel方法设置坐标轴描述

%matplotlib inline  
import numpy as np
import matplotlib.pyplot as plt
from pylab import *
x=np.arange(0.,10,0.2)
plt.xlim(x.min()*1.1,x.max()*1.1)
plt.ylim(-1.5,4.0)
plt.xticks([2,4,6,8,10],[r'two',r'four',r'six',r'hello',r'10'])
plt.yticks([-1.0,0.0,1.0,2.0,3.0,4.0],[r'bottom',r'0.0',r'1.0',r'2.0',r'3.0',r'4.0'])
plt.title(r'$the \ function \ figure \ of \ cos(), \ sin() \ and \ sqrt()$',fontsize=18)#fontsize参数设置字体大小
#'\'号两侧必须各有一个空格字符,否则无法解析
plt.xlabel(r'$the \ input \ value \ of \ x$',fontsize=16,labelpad=6)#labelpad参数设置描述距离轴远近
plt.ylabel(r'$y=f(x)$',fontsize=16,labelpad=6)
Text(0,0.5,'$y=f(x)$')

Python可视化库matplotlib(基础)_第6张图片

设置图片上的描述

(1.)text方法设置图片上的文字描述和注解

%matplotlib inline  
import numpy as np
import matplotlib.pyplot as plt
from pylab import *
x=np.arange(0.,1,0.02)
plt.xlim(x.min()*1.1,x.max()*1.1)
plt.ylim(-1.5,4.0)
plt.text(0.8,2.9,r'$x \in [0.0, \ 10.0]$',color='k',fontsize=10)#坐标设定图注显示位置
plt.text(0.8,0.8,r'$y \in [-1.0, \ 4.0]$',color='k',fontsize=10)
Text(0.8,0.8,'$y \\in [-1.0, \\ 4.0]$')

Python可视化库matplotlib(基础)_第7张图片

(2.)annotate方法对图片上某个点加注解


%matplotlib inline  
import numpy as np
import matplotlib.pyplot as plt
from pylab import *
x=np.arange(0.,10,0.2)
plt.xlim(x.min()*1.1,x.max()*1.1)
plt.ylim(-1.5,4.0)
plt.scatter([8,],[np.sqrt(8),],50,color='m')  #使用散点图放大当前点
plt.annotate(r'$2\sqrt{2}$',xy=(8,np.sqrt(8)),xytext=(8.5,2.2),fontsize=16,color='#090909',\
             arrowprops=dict(arrowstyle='->',connectionstyle='arc3,rad=1',color='#090909'))
#xy参数设置'被注解点'的坐标,xytext参数设置'注解文字'的位置,arrowprops参数设置注解文字与被注解点的连接方式
Text(8.5,2.2,'$2\\sqrt{2}$')

Python可视化库matplotlib(基础)_第8张图片

可使用如下两种方式:

1 、在 plt.plot 函数中添加 label 参数后,使用 plt.legend(loc=’upper right’)

%matplotlib inline  
import numpy as np
import matplotlib.pyplot as plt
from pylab import *
x=np.arange(0.,10,0.2)
y1=np.cos(x)
y2=np.sin(x)
y3=np.sqrt(x)
plt.rcParams['figure.figsize']=(10,6)   #rcParams设置图片尺寸
plt.plot(x,y1,color='blue',linewidth=1.5,linestyle='-',marker='.',label=r'$y=cos{x}$')
plt.plot(x,y2,color='green',linewidth=1.5,linestyle='-',marker='*',label=r'$y=sin{x}$')
plt.plot(x,y3,color='m',linewidth=1.5,linestyle='-',marker='x',label=r'$y=\sqrt{x}$')
plt.legend(loc='upper left')  #loc参数设置图例在图片中的位置

Python可视化库matplotlib(基础)_第9张图片

2、不使用参数 label, 直接使用如下命令:

%matplotlib inline  
import numpy as np
import matplotlib.pyplot as plt
from pylab import *
x=np.arange(0.,10,0.2)
y1=np.cos(x)
y2=np.sin(x)
y3=np.sqrt(x)
plt.rcParams['figure.figsize']=(10,6)   #reParams设置图片尺寸
plt.plot(x,y1,color='blue',linewidth=1.5,linestyle='-',marker='.')
plt.plot(x,y2,color='green',linewidth=1.5,linestyle='-',marker='*')
plt.plot(x,y3,color='m',linewidth=1.5,linestyle='-',marker='x')
plt.legend(['cos(x)','sin(x)','sqrt(x)'],loc='upper left')  #对好顺序
Python可视化库matplotlib(基础)_第10张图片

网格线开关plt.grid(True)

plt.grid(True)

图像显示plt.show()

plt.show()

图像保存savefig(‘../ / .png’)

savefig('../imagetest/picname.png',dpi=48)

常用图形

(1)曲线图:描绘波动,2个维度matplotlib.pyplot.plot(data)

%matplotlib inline  
import numpy as np
import matplotlib.pyplot as plt
from pylab import *
x=np.arange(-5,5,0.1)
y=x**2
plt.plot(x,y)
plt.grid(True)
plt.show()
Python可视化库matplotlib(基础)_第11张图片

(2)灰度图:直方图,1个维度matplotlib.pyplot.hist(data)

%matplotlib inline
import numpy as np
import matplotlib.pyplot as plt
from pylab import *
x = np.random.normal(size=1000)
plt.hist(x,bins=10)#bin参数设置分桶数目
(array([   1.,    8.,   37.,  111.,  230.,  270.,  211.,   95.,   30.,    7.]),
 array([-3.75294548, -3.06353363, -2.37412178, -1.68470992, -0.99529807,
        -0.30588621,  0.38352564,  1.07293749,  1.76234935,  2.4517612 ,
         3.14117305]),
 

Python可视化库matplotlib(基础)_第12张图片


#(3)散点图:2个维度数据的关联程度matplotlib.pyplot.scatter(data)

%matplotlib inline
import numpy as np
import matplotlib.pyplot as plt
from pylab import *
plt.rcParams['figure.figsize']=(8,8)
x=np.random.normal(size=1000)
y=np.random.normal(size=1000)
plt.scatter(x,y)

Python可视化库matplotlib(基础)_第13张图片

(4)箱式图:设定上下限,除数据噪声matplotlib.pyplot.boxplot(data) 
箱式图(箱线图)科普: 
上边缘(Q3+1.5IQR)、下边缘(Q1-1.5IQR)、IQR=Q3-Q1 
上四分位数(Q3)、下四分位数(Q1) 
中位数 
异常值 
处理异常值时与3σσ标准的异同:统计边界是否受异常值影响、容忍度的大小

%matplotlib inline  
import numpy as np
import matplotlib.pyplot as plt
from pylab import *
x=np.arange(-5,5,0.1)
plt.boxplot(x)
{'boxes': [],
 'caps': [,
  ],
 'fliers': [],
 'means': [],
 'medians': [],
 'whiskers': [,
  ]}


Python可视化库matplotlib(基础)_第14张图片

%matplotlib inline  
import numpy as np
import matplotlib.pyplot as plt
from pylab import *
sort=['Foxes','Cats','Dogs','Pigs']
sizes=[13,30,30,37]
color=['m','b','g','r']
explode=(0,0.1,0,0)   #分离第2类,数值表示分离远近
plt.pie(sizes,explode=explode,labels=sort,colors=color,autopct='%1.1f%%',shadow=True)  #autopic参数加百分比

([,
  ,
  ,
  ],
 [Text(1.02505,0.399088,'Foxes'),
  Text(-0.0342673,1.19951,'Cats'),
  Text(-1.08389,-0.187574,'Dogs'),
  Text(0.540906,-0.957821,'Pigs')],
 [Text(0.559118,0.217685,'11.8%'),
  Text(-0.0199892,0.699715,'27.3%'),
  Text(-0.591212,-0.102313,'27.3%'),
  Text(0.29504,-0.522448,'33.6%')])
Python可视化库matplotlib(基础)_第15张图片






你可能感兴趣的:(学习笔记)