专业做网站的公司有没有服务器,一级页面的网站怎么做,jpress wordpress对比,男女做性哪个的小视频网站目录 1. 简介2. Matplotlib 开发环境2.1 画图2.2 画图接口2.4 线形图2.5 散点图2.6 等高线图2.7 直方图 1. 简介
Matplotlib网址#xff1a;https://matplotlib.org/
数据可视化是数据分析中最重要的工作之一。Matploblib是建立在Numpy数组基础上的多平台数据可视化程序库https://matplotlib.org/
数据可视化是数据分析中最重要的工作之一。Matploblib是建立在Numpy数组基础上的多平台数据可视化程序库专门用于开发2D图表包括3D图表。matploblib继承了Matlab的交互性用户可以逐条输入命令为数据生成渐趋完整的图形表示。
Matplotlib注意有如下优点
使用简单。以渐进、交互式方式实现数据可视化。表达式和文本使用LaTeX排版。对图像元素控制力强。可输出PNG、PDF、SVG和EPS。
安装和导入Matplotab
# 安装Pandas
Windows 按住winR 输入 cmdMac 打开Terminal
conda install matplotlib
pip install matplotlibimport matplotlib as mpl # 导入模块
import matplotlib.pyplot as plt # 导入模块方法2. Matplotlib 开发环境
Matplotlib 有3种开发环境分别是脚本、IPython shell 和 IPython Notebook。
2.1 画图
在脚本中画图
如果在一个脚本文件中使用Matplotlib那么现实图形的时候必须使用plt.show()启动一个事件循环event loop并找到所有当前可用的图形对象然后打开一个或多个交互式窗口显示图形。
# 方法一
import matplotlib.pyplot as plt
import numpy as np
x np.linspace(0,10,100) # 生成110中100个等差数
plt.plot(x,np.sin(x)) # 正弦曲线
plt.plot(x,np.cos(x)) # 余弦曲线
plt.show() # 画图import matplotlib.pyplot as plt
import numpy as np
x np.linspace(0,10,100)
fig plt.figure()
plt.plot(x,np.sin(x))
plt.plot(x,np.cos(x))在IPython shell中画图
在IPython中使用%matplotlib魔法命令启动Matplotlib模式就不需要使用plt.show()。
%matplotlib
import matplotlib.pyplot as plt
import numpy as np
x np.linspace(0,10,100)
plt.plot(x,np.sin(x))
plt.plot(x,np.cos(x))在IPython Notebook中画图
IPython Notebook 是一款基于浏览器的交互式数据分析工具可以将描述文字、代码、图形、HTML元素以及更多的媒体形式组合起来集成到单个可执行的Notebook文档中。
%matplotlib notebook在Notebook中启动交互式图形。%matplotlib inline在Notebook中启动静态图形。
%matplotlib inline
import matplotlib.pyplot as plt
import numpy as np
x np.linspace(0,10,100)
fig plt.figure()
plt.plot(x,np.sin(x))
plt.plot(x,np.cos(x))2.2 画图接口
Matplotlib 提供了两种画图接口一种是便捷的Matlab风格接口另一个是功能更强大的面向对象接口。
Matlab 风格接口最重要的特性是有状态的stateful它持续跟踪当前的图形和坐标轴所有plt命令都可以应用。可以使用plt.gcf()获取当前图形的具体信息使用plt.gca()获取当前坐标轴的具体信息。
import matplotlib.pyplot as plt
import numpy as np
x np.linspace(0,10,100)
plt.figure() # 创建图形
plt.subplot(2,1,1) # 创建两个子图中的第一个设置坐标轴行、列、子图编号
plt.plot(x,np.sin(x))
plt.subplot(2,1,2) # 创建两个子图中的第二个设置坐标轴
plt.plot(x,np.cos(x))面向对象接口可适应更复杂的场景可以更好地控制图形。画图函数不再受到当前活动的图形或坐标轴的限制而变成了显式的Figure和Axes的方法。复杂图形时面向对象接口方法更方便。
import matplotlib.pyplot as plt
import numpy as np
x np.linspace(0,10,100)
fig,ax plt.subplots(2) # 创建图形网格ax是一个包含两个Axes对象的数组
ax[0].plot(x,np.sin(x))
ax[1].plot(x,np.cos(x))2.4 线形图
线性图形就是方程yf(x)使用plt.style可以选择图形的绘图风格。figure 可以被看成是一个能够容纳各种坐标轴、图形、文字和标签的容器。axes 是一个带有刻度和标签的矩形最终包含所有可视化的图形元素。
plt.style.use(seaborn-whitegrid) #
fig plt.figure() # 创建一个图形 fig
ax plt.axes() # 创建一个坐标 ax
x np.linspace(0,10,1000)
ax.plot(x,np.sin(x)) # 使用 ax.plot画图
plt.plot(x,np.cos(x)) # 使用 pylab 接口画图调整线条的颜色与风格
put.plot()函数可以通过相应的参数设置颜色与风格。要修改颜色可以使用color参数它支持各种颜色值的字符串。
plt.plot(x,np.sin(x-0),colorblue) # 标准颜色名称
plt.plot(x,np.sin(x-1),colorg) # 缩写颜色代码
plt.plot(x,np.sin(x-2),color0.75) # 范围在01的灰度值
plt.plot(x,np.sin(x-3),color#FFDD44) # 十六进制RRGGBB00FF
plt.plot(x,np.sin(x-4),color(1.0,0.2,0.3)) # RGB 元组范围01
plt.plot(x,np.sin(x-5),colorchartreuse) # HTML 颜色名称使用linestyle可以调整线条的风格
plt.plot(x,x0,linestylesolid)
plt.plot(x,x1,linestyledashed)
plt.plot(x,x2,linestyledashdot)
plt.plot(x,x3,linestyledotted)
plt.plot(x,x4,linestyle-) # 实线
plt.plot(x,x5,linestyle--) # 虚线
plt.plot(x,x6,linestyle-.) # 点画线
plt.plot(x,x7,linestyle:) # 实点线也可以将linestyle和color组合起来作为plt.plot()函数的一个非关键字使用。
plt.plot(x,x0,-g) # 绿色实线
plt.plot(x,x1,--c) # 青色虚线
plt.plot(x,x2,-.k) # 黑色点画线
plt.plot(x,x3,:r) # 红色实点线调整坐标轴上下限和设置图形标签
Matplotlib 自动为图形选择最合适的坐标轴上下限但是有时自定义坐标轴上下限可能会更好。调整坐标轴上下限最基础的方法是plt.xlim()和plt.ylim()。
也可以使用plt.axis()通过传入[xmin,xmax,ymin,ymax]对应的值它还可以按照图形的内容自动收紧坐标轴不留空白区域。
import matplotlib.pyplot as plt
import numpy as np
x np.linspace(0,10,100)
fig plt.figure()
plt.plot(x,np.sin(x))
# plt.xlim(-1,11)
# plt.ylim(-1.5,1.5)
plt.axis([-1,11,-1.5,1.5])
plt.axis(tight) # 根据内容自动收紧坐标轴不留空白
plt.axis(equal) # 设置分辨率为1:1x轴单位长度和y轴单位长度相等
plt.title(ysin(x)) # 标题
plt.xlabel(x) # x轴标题
plt.ylabel(sin(x)) # y轴标题也可以使用plt.legend()方法创建图例。将每条的标签与其风格、颜色自动匹配。
plt.plot(x,np.sin(x),-g,labelsin(x))
plt.plot(x,np.cos(x),:b,labelcos(x))
plt.axis(equal)
plt.legend() # 自动匹配2.5 散点图
散点图是由独立的恶点、圆圈或其它形状构成的。
使用plt.plot/ax.plot画散点图。
%matplotlib inline
import matplotlib.pyplot as plt
import numpy as np
plt.style.use(seaborn-whitegrid)
x np.linspace(0,10,30)
y np.sin(x)
plt.plot(x,y,o,colorblack)rng np.random.RandomState(0)
for marker in [o,.,,,x,,v,^,,,s,d]:plt.plot(rng.rand(5),rng.rand(5),marker,labelmarker{0}.format(marker))plt.legend(numpoints1)plt.xlim(0,1.8)plt.plot(x,y,-ok) # 直线-、圆圈o)、黑色kplt.plot(x,y,-p,colorgray,markersize15,linewidth4,markerfacecolorwhite,markeredgecolorgray,markeredgewidth2)
plt.ylim(-1.2,1.2)用plt.scatter函数画散点图。
plt.scatter与plt.plot的主要区别前者在创建散点图时具有更高的灵活性可以单独控制每个散点图与数据匹配也可以让每个散点图具有不同的属性大小、表面颜色、边框颜色等
rng np.random.RandomState(0)
x rng.randn(100)
y rng.randn(100)
colors rng.rand(100)
sizes 1000*rng.rand(100)
plt.scatter(x,y,ccolors,ssizes,alpha0.3,cmapviridis)
plt.colorbar()from sklearn.datasets import load_iris
iris load_iris()
features iris.data.T
plt.scatter(features[0],features[1],alpha0.2,s100*features[3],ciris.target,cmapviridis)
plt.xlabel(iris.feature_names[0])
plt.ylabel(iris.feature_names[1])数据量较小的时候plt.plot与plt.scatter在效率上差异不大但是当数据大的时候plt.plot的效率将大大高于plt.scatter。 2.6 等高线图
使用plt.contour可以画等高线图可以画带有填充色的等高线图的色彩使用plt.imshow可以显示图形。
%matplotlib inline
import matplotlib.pyplot as plt
import numpy as np
plt.style.use(seaborn-white)
def f(x,y):return np.sin(x)**10np.cos(10y*x)*np.cos(x)
x np.linspace(0,5,50) # 05中50个等差数字
y np.linspace(0,5,40)
X,Y np.meshgrid(x,y) # 从一维数组构建二维网格数据
Z f(X,Y)
# plt.contour(X,Y,Z,colorsblack) # 画标准的线形等高线图
plt.contour(X,Y,Z,20,cmapRdGy) # 设置一个线条配色方案自定义颜色将数据范围等分为20份红-灰
plt.colorbar() # 自动创建一个表示图形各种颜色对应的标签颜色条contours plt.contour(X,Y,Z,3,colorsblack)
plt.clabel(contours,inlineTrue,fontsize8)
plt.imshow(Z,extent[0,5,0,5],originlower,cmapRdGy,alpha0.5)# alpha 设置透明度
plt.colorbar()2.7 直方图
一维直方图创建一个简易的频次直方图
%matplotlib inline
import matplotlib.pyplot as plt
import numpy as np
plt.style.use(seaborn-white)# data np.random.randn(1000)
# plt.hist(data,bins30,densityTrue,alpha0.5,
# histtypestepfilled,colorsteelblue,
# edgecolornone)x1 np.random.normal(0,0.8,1000)
x2 np.random.normal(-2,1,1000)
x3 np.random.normal(3,2,1000)
kwargs dict(histtypestepfilled,alpha0.3,densityTrue,bins40)
plt.hist(x1,**kwargs)
plt.hist(x2,**kwargs)
plt.hist(x3,**kwargs)
print(counts) # 查看每段区间样本数 [ 16 249 565 165 5]二维直方图将二维数组按照二维区间进行切分创建二维频次直方图。
使用plt.hist2d
mean [0,0]
cov [[1,1],[1,2]]
x,y np.random.multivariate_normal(mean,cov,10000).T
plt.hist2d(x,y,bins30,cmapBlues)
cb plt.colorbar()
cb.set_label(counts in bin)
counts,xedges,yedges np.histogram2d(x,y,bins30)使用plt.hexbin正六边形分割将二维数据集成分割成蜂窝状
plt.hexbin(x,y,gridsize30,cmapBlues)
cb plt.colorbar(labelcount in bin)核密度估计使用KDE方法抹除空间中离散的数据点从而拟合一个平滑的函数。
from scipy.stats import gaussian_kde
data np.vstack([x,y])
kde gaussian_kde(data)
xgrid np.linspace(-3.5,3.5,40)
ygrid np.linspace(-6,6,40)
Xgrid,Ygrid np.meshgrid(xgrid,ygrid)
Z kde.evaluate(np.vstack([Xgrid.ravel(),Ygrid.ravel()]))
plt.imshow(Z.reshape(Xgrid.shape),originlower,aspectauto,extent[-3.5,3.5,-6,6],cmapBlues)
cb plt.colorbar(labeldensity)KDE 方法通过不同的平滑带宽长度在拟合函数的准确性和平滑性之间做出权衡。gaussian_kde通过一种经验方法试图找到输入数据平滑长度的近似最优解。