Matplotlib

  • 基本属性
    • 配置参数:
    • 线条风格linestyle或ls
    • 线条标记
    • 颜色
    • 背景色
  • 应用 (iris为例)
  • Matolotlib 数据可视化
  • 三维图形简介

基本属性

Matplotlib 是 Python 的绘图库。 它可与 NumPy 一起使用,MATLAB是数据绘图领域广泛使用的语言和工具。MATLAB语言是面向过程的。利用函数的调用,MATLAB中可以轻松的利用一行命令来绘制直线,然后再用一系列的函数调整结果。matplotlib有一套完全仿照MATLAB的函数形式的绘图接口,在matplotlib.pyplot模块中。这套函数接口方便MATLAB用户过度到matplotlib包

配置参数:


axex: 设置坐标轴边界和表面的颜色、坐标刻度值大小和网格的显示
figure: 控制dpi、边界颜色、图形大小、和子区( subplot)设置
font: 字体集(font family)、字体大小和样式设置
grid: 设置网格颜色和线性
legend: 设置图例和其中的文本的显示
line: 设置线条(颜色、线型、宽度等)和标记
patch: 是填充2D空间的图形对象,如多边形和圆。控制线宽、颜色和抗锯齿设置等。
savefig: 可以对保存的图形进行单独设置。例如,设置渲染的文件的背景为白色。
verbose: 设置matplotlib在执行期间信息输出,如silent、helpful、debug和debug-annoying。
xticks和yticks: 为x,y轴的主刻度和次刻度设置颜色、大小、方向,以及标签大小。

线条风格linestyle或ls


‘-‘     实线
‘:’     虚线
‘–’  破折线
‘None’,’ ‘,’’   什么都不画
‘-.’    点划线

线条标记

标记maker            描述‘o’                 圆圈
‘.’                 点
‘D’                 菱形
‘s’                 正方形
‘h’                 六边形1
‘*’                 星号
‘H’                 六边形2
‘d’                 小菱形
‘_’                 水平线
‘v’                 一角朝下的三角形
‘8’                 八边形
‘<’                 一角朝左的三角形
‘p’                 五边形
‘>’                 一角朝右的三角形
‘,’                 像素
‘^’                 一角朝上的三角形
‘+’                 加号
‘\  ‘               竖线
‘None’,’’,’ ‘       无
‘x’                 X

颜色

别名             颜色   b               蓝色
g               绿色
r               红色
y               黄色
c               青色
k               黑色
m               洋红色
w               白色

背景色

通过向如matplotlib.pyplot.axes()或者matplotlib.pyplot.subplot()这样的方法提供一个axisbg参数,可以指定坐标这的背景色。

subplot(111,axisbg=(0.1843,0.3098,0.3098)

示例


import matplotlib as mplimport matplotlib.pyplot as plt
import numpy as np
#绘制直线图plt.plot()横坐标轴是特征 纵坐标为对应的值 散点图plt.scatter() 横纵两个都是特征
x=np.linspace(0,10,50)
y=np.sin(x)
cosy=np.cos(x)
plt.plot(x,y,label="sin(x)")
plt.plot(x,cosy,color='black',linestyle='--',label="cos(x)")
plt.xlim(-5,15)#调节x,y
plt.ylim(0,1.5)
plt.axis([-1,11,-2,2])#同时
plt.xlabel("x axis")
plt.ylabel("y value")
plt.legend()#图例cos sin
plt.title("welcom to pandas learning")
plt.show()x=np.random.normal(0,1,100)
y=np.random.normal(0,1,100)
plt.scatter(x,y,alpha=0.5)
plt.show()

应用 (iris为例)

import numpy as npimport matplotlib as mpl
import matplotlib.pyplot as plt
from sklearn import datasets
iris=datasets.load_iris()
print(iris.DESCR)
print(iris.data.shape)
print(iris.feature_names)
print(iris.target.shape)
print(iris.target_names)
X=iris.data[:,:2]
print(X.shape)
plt.scatter(X[:,0],X[:,1])
plt.show()
y=iris.target
plt.scatter(X[y==0,0],X[y==0,1],color='red',alpha=0.5,marker='o')
plt.scatter(X[y==1,0],X[y==1,1],color='b',marker='*')
plt.scatter(X[y==2,0],X[y==2,1],color='green',marker='+')
plt.show()
X=iris.data[:,2:]
print(X.shape)
plt.scatter(X[:,0],X[:,1])
plt.show()
y=iris.target
plt.scatter(X[y==0,0],X[y==0,1],color='red',alpha=0.5,marker='o')
plt.scatter(X[y==1,0],X[y==1,1],color='b',marker='*')
plt.scatter(X[y==2,0],X[y==2,1],color='green',marker='+')
plt.show()

Matolotlib 数据可视化

代码如下(示例):

import matplotlib.pyplot as pltimport numpy as npx=[1,2,3,4]
y=[1,4,9,16]
plt.plot(x,y)
plt.ylabel("squares")
plt.show()
#设置样式
plt.style.available[:5]
plt.show()
with plt.style.context("seaborn-whitegrid"):plt.plot(x,y)
#将图像保存为文件
x=np.linspace(0,10,100)
plt.plot(x,np.exp(x))
plt.savefig("my_figure.png")
plt.show()
#Matplotlib库
#折线图
x=np.linspace(0,2*np.pi,100)
print(plt.plot(x,np.sin(x)))
plt.show()
#绘制多条曲线
plt.plot(x,np.sin(x))
plt.plot(x,np.cos(x))
plt.show()
#调整线条颜色和风格
offsets=np.linspace(0,np.pi,5)#开始 结束 样本数
colors=["blue","g","r","yellow","pink"]
for offset,color in zip(offsets,colors):plt.plot(x,np.sin(x-offset),color=color)
plt.show()
#风格
x=np.linspace(0,10,11)
offsets=list(range(8))
linestyles=["solid","dashed","dashdot","dotted","-","--","-",":"]
for offset,linestyle in zip(offsets,linestyles):plt.plot(x,x+offset,linestyle=linestyle)
#调整线宽
x=np.linspace(0,10,11)
offsets=list(range(0,12,3))
linewidths=(i*2 for i in range(1,5))
for offset,linewidth in zip(offsets,linewidths):plt.plot(x,x+offset,linewidth=linewidth)
plt.show()
#设置数据点标记
x=np.linspace(0,10,11)
offsets=list(range(0,12,2))
markers=["*","+","o","s","s","+"]
for offset,marker in zip(offsets,markers):plt.plot(x,x+offset,marker=marker,ms=15)#ms 标签大小
plt.show()x=np.linspace(0,10,11)
offsets=list(range(0,8,2))
color_marker_linestyles=["g*+","b+-","ko-","rs:"]
for offset,color_marker_linestyle in zip(offsets,color_marker_linestyles):plt.plot(x,x+offset,color_marker_linestyles)#颜色数据点线性plt.show()
#调整坐标轴
x=np.linspace(0,2*np.pi,100)
plt.plot(x,np.sin(x))
plt.xlim(-1,7)
plt.ylim(-1.5,1.5)
plt.axis([-2,8,-2,2])#x,y同时设置
plt.axis("tight")#紧
plt.axis("equal")#缓
plt.show()
#对数坐标 坐标轴刻度样式调整
x=np.linspace(0,10,100)
plt.plot(x,x**2)
plt.xticks(np.arange(0,12,step=2))
plt.show()
#图例
x=np.linspace(0,2*np.pi,100)
plt.plot(x,np.sin(x),"b-",label="Sin")
plt.plot(x,np.cos(x),"r-",label="Cos")
plt.ylim(-1.5,2)
plt.title("SJHS")
plt.xlabel("x",fontsize=15)
plt.ylabel("sin(x)",fontsize=15)
plt.legend(loc="upper center",frameon=True,fontsize=15)
plt.text(3.5,0.5,"y=sin(x)",fontsize=15)#添加文字
plt.annotate('local min',xy=(1.5*np.pi,-1),xytext=(4.5,0),arrowprops=dict(facecolor='black',shrink=0.1),)#添加箭头
plt.show()import matplotlib.pyplot as pltimport numpy as np#散点图
x=np.linspace(0,10,50)
y=x**2
plt.scatter(x,y,c=y,cmap="inferno")#c=y 颜色映射
plt.colorbar()
plt.show()
#根据数据控制点大小-映射 透明度
x,y,colors,size=(np.random.rand(100) for i in range(4))
plt.figure(figsize=(12,6))#设置画布大小
plt.scatter(x,y,c=colors,s=1000*size,cmap="viridis",alpha=0.3)
plt.colorbar()
plt.show()
#柱形图
x=np.arange(1,6)
plt.bar(x,2*x,align="center",width=0.5,alpha=0.5,color=['yellow','green','red','pink','purple'],edgecolor='red')
plt.xticks(x,('G1','G2','G3','G4','G5'))
plt.tick_params(axis='both',labelsize=13)
plt.show()
#多子图
x=np.random.random(10)
y=np.random.random(10)
plt.subplots_adjust(hspace=0.5,wspace=0.3)#间隔
plt.subplot(321)
plt.scatter(x,y,s=80,c="b",marker=">")
plt.subplot(322)
plt.scatter(x,y,s=80,c="g",marker="*")
plt.subplot(323)
plt.scatter(x,y,s=80,c="r",marker="s")
plt.subplot(324)
plt.scatter(x,y,s=80,c="c",marker="p")
plt.subplot(325)
plt.scatter(x,y,s=80,c="m",marker="+")
plt.subplot(326)
plt.scatter(x,y,s=80,c="y",marker="H")
plt.show()
#直方图
#普通频次直方图
mu,sigma=100,15#均值100 标准差15
x=mu+sigma*np.random.randn(10000)
plt.hist(x,bins=50,facecolor='g',alpha=0.75)
plt.show()
#概率密度
mu,sigma=100,15#均值100 标准差15
x=mu+sigma*np.random.randn(10000)
plt.hist(x,bins=50,density=True,facecolor='r',alpha=0.75)
plt.show()
#累计概率分布#模拟投两个骰子
class Die():#模拟一个骰子的类def __init__(self,num_sides=6):self.num_sides=num_sidesdef roll(self):return np.random.randint(1,self.num_sides+1)
#重复投一个
die=Die()
results=[]
for i in range(60000):result=die.roll()results.append(result)
plt.hist(results,bins=6,range=(0.75,6.75),align="mid",rwidth=0.5)
plt.xlim(0,7)
plt.show()
#误差图yerr=d
x=np.linspace(0,10,50)
dy=0.5
y=np.sin(x)+dy*np.random.randn(50)
plt.errorbar(x,y,yerr=dy,fmt="+b")
plt.show()#面向对象风格 普通图 画中画

三维图形简介

代码如下(示例):

import matplotlib.pyplot as pltimport numpy as np
from mpl_toolkits import mplot3d
#三维数据点与线
ax=plt.axes(projection="3d")
zline=np.linspace(0,15,1000)
xline=np.sin(zline)
yline=np.cos(zline)
ax.plot3D(xline,yline,zline)#线
zdata=15*np.random.random(100)
xdata=np.sin(zdata)
ydata=np.cos(zdata)
ax.scatter3D(xdata,ydata,zdata,c=zdata,cmap="spring")
plt.show()
#三维数据曲面图
def f(x,y):return np.sin(np.sqrt(x**2+y**2))
x=np.linspace(-6,6,30)
y=np.linspace(-6,6,30)
X,Y=np.meshgrid(x,y)
Z=f(X,Y)
ax=plt.axes(projection="3d")
ax.plot_surface(X,Y,Z,cmap="viridis")
plt.show()
#Seaborn库-文艺青年的最爱 基于matplotlib且数据与pandas统一的统计图制作库
#折线图对比
x=np.linspace(0,10,500)#开始,结束,样本
y=np.cumsum(np.random.randn(500,6),axis=0)#500行6列
with plt.style.context("classic"):plt.plot(x,y)plt.legend("ABCDEF",ncol=2,loc="upper left")#设置图例 名称列位置
plt.show()
#对比
import seaborn as sns
x=np.linspace(0,10,500)#开始,结束,样本
y=np.cumsum(np.random.randn(500,6),axis=0)
sns.set()#更加柔和
plt.plot(x, y)
plt.legend("ABCDEF", ncol=2, loc="upper left")
plt.show()
#柱形图对比
#matplotlib
x=['G1','G2','G3','G4','G5']
y=2*np.arange(1,6)
plt.figure(figsize=(8,4))
plt.barh(x,y,align="center",height=0.5,alpha=0.8,color="blue")
plt.tick_params(axis="both",labelsize=13)
plt.show()
#seaborn
x=['G5','G4','G3','G3','G1']
y=2*np.arange(5,0,-1)
sns.barplot(y,x,linewidth=5)
plt.show()
#以鸢尾花数据集为例
iris=sns.load_dataset("iris")
print(iris.head())
sns.pairplot(data=iris,hue="species")
plt.show()

【Python】一份非常好的Matplotlib教程

python-Matplotlib数据可视化相关推荐

  1. Python Matplotlib数据可视化绘图之(六)————图片大小、颜色、标题、纵横坐标、画布和绘图区域背景颜色、Legend(图例)等的参数设置详解

    文章目录 前言 一.图片大小的设定和调节 1. 三种调整matplotlib图片大小的方法 1.1 plt.figure(figsize=(n, n)) 1.1.1 代码如下: 1.1.2 输出结果如 ...

  2. python matplotlib数据可视化教程_matplotlib的Python数据可视化和探索——入门指南

    matplotlib--最受欢迎的Python库,用于数据可视化和探索 我喜欢在Python中使用matplotlib.这是我学会掌握的第一个可视化库,此后一直存在.matplotlib是最受欢迎的用 ...

  3. Python+matplotlib数据可视化鼠标悬停自动标注功能实现

    功能描述:根据已有数据绘制图形之后,鼠标进入轴内自动设置背景色,退出轴时自动恢复背景色,若鼠标移动时悬停于曲线附近,则自动弹出文本标注提示当前值. 参考代码: 运行效果(鼠标位于轴外时): 运行效果( ...

  4. Python matplotlib数据可视化 subplot绘制多个子图

    数据可视化的时候,有时需要将多个子图放在同一个画板上进行比较.通过使用GridSpec类配合subplot,可以很容易对子区域进行划定和选择,在同一个画板上绘制多个子图. 原文链接:https://y ...

  5. python matplotlib数据可视化教程_Python使用matplotlib实现数据可视化教程

    目前有很多 工具 都可以数实现据可视化,比如我们常用的Excel,还有数据科学另一门重要的语言R,以及百度的Echarts等可视化工具.今天我们的主角是 Python 中的matplotlib库(官网 ...

  6. Python+matplotlib数据可视化设置图例3个精选案例

    本周推荐书目:<Python程序设计实验指导书>,董付国编著,清华大学出版社 本书详情链接二维码(清华大学出版社天猫官方旗舰店): 送书活动在继续,下周送第五批,详情链接:<Pyth ...

  7. python matplotlib数据可视化_Python - matplotlib 数据可视化

    2  图和子图的建立 2.1  导入matplotlib import matplotlib.pyplot as plt import numpy as np 2.2  建立图和子图方式一 plt.p ...

  8. python—matplotlib数据可视化实例注解系列-----之plot图线型设置

    本文代码源自官方实例,部分进行了修改和注解,增加不同线型的显示实例,帮助学习和查询. """ ====================================== ...

  9. python如何读取mat文件可视化_python Matplotlib数据可视化(1):简单入门

    1 matplot入门指南 matplotlib是Python科学计算中使用最多的一个可视化库,功能丰富,提供了非常多的可视化方案,基本能够满足各种场景下的数据可视化需求.但功能丰富从另一方面来说也意 ...

  10. matplotlib 数据可视化

    图的基本结构 通常,使用 numpy 组织数据, 使用 matplotlib API 进行数据图像绘制. 一幅数据图基本上包括如下结构: Data: 数据区,包括数据点.描绘形状 Axis: 坐标轴, ...

最新文章

  1. 超可爱,抖音爆款实时视频漫画变身特效技术
  2. 基于thinkphp的省略图便捷函数
  3. CentOS 7下载
  4. matlab计算斜方差_协方差与协方差矩阵(附Matlab实现)
  5. 高级数据结构与算法 | 深度遍历搜索(DFS)与广度遍历搜索(BFS)
  6. 自适应滤波实例之系统辨识
  7. OpenCV的数据类型——辅助对象
  8. SVD 与 PCA 的直观解释(1): 线性变换
  9. 不固定个数的子元素自适应居中
  10. c++14 0 名字空间和条件编译
  11. web.xml中配置启动时加载的servlet,load-on-starup
  12. 【TencentOS tiny学习】源码分析(6)——互斥锁
  13. 色差仪如何控制油漆涂层色差
  14. 想用 AI 在《MineCraft》挖矿躺赢?660 支队伍全部失败
  15. 会声会影如何修整剪辑视频素材
  16. 云服务器除了阿里云外其他哪个比较好?
  17. OO过时了吗?软件危机还有吗?
  18. 你想要的Flexsim学习途径这里都有
  19. Hibernate实例--注解配置表映射
  20. 推荐一个批量改文件名的工具

热门文章

  1. 人人都道RAZ好,我读了400多本之后,才明白哪里好
  2. 906007-10-1,Azide-PEG6-Tos叠氮化物(N3)基团可以通过点击化学与炔烃、BCN、DBCO反应
  3. 【基础知识】深度学习中各种归一化方式详解
  4. 企业微信社群运营该怎么做?
  5. lilypond 符号_LilyPond演奏优美的音乐
  6. 项目经理的能力模型和能力提升的方法
  7. 折腾nock给jsonp进行单元测试
  8. “遛狗不牵绳-违法”--遛狗不牵绳识别检测 助力智慧城市犬类管理
  9. 安防人眼里的“区块链玩法遛狗也能赚钱”
  10. 关于阿里云aca和acp哪个好?阿里云认证证书有含金量吗?