今天给大家带来Python的数据可视化,主要分为两个模块,第一个模块是画点图和画线图,第二个模块是画面图。
这两个模块都用到了plotly模块,没有安装的小伙伴可以使用以下这条命令进行安装
pip install plotly
绘制点与线
首先是绘制线,我们需要一些数据,这些数据需要以列表的方式存储,这里就不举例子了,如果大家想要练习一下,可以上github上找一找,那里有很多数据
import plotly.graph_objects as go
line = go.Scatter(x=data['XXX'],y=data['XXX'],name = 'name') #创建一条名为name的线
fig = go.Figure(line) #创建一张图,将line放到这张图上
fig.show()
这里data是你列表的名字
x=data[‘XXX’]的意思是以列表中名为XXX的一组数据为X轴,同理y=data[‘XXX’]
这样就将数据可视化了,是不是非常简单
如果我们想画很多条线怎么办,其实非常简单
line1 = go.Scatter(...)
line2 = go.Scatter(...)
fig = Figure([line1,lin2])
fig.show()
如果我们想要给这张表赋予名字怎么办
我们需要在fig.show()
这条语句前面加一条语句
fig.update_layout(title="表的名字",xaxis_title="x轴的名字",yaxis_title="y轴的名字")
这样我们就将一个线形图画出来了
如果我们需要画一个条形图我们只需要将上述代码中的Scatter
改成Bar
如果我们想给柱状图的每个柱上标上数字我们只要在创造柱的语句中加上两个属性
go.Bar(x=data[...],y=data[...],text=data["这里是你要标的数字的数据名称,通常是y轴对应数据的名字"],textposition="outside")
这样我们就将数字标在了柱状图的外面
如果我们想画点图的话也是只需要在创建线的代码里加上一段话
line = go.Scatter(x=data[...],y=data[...],mode="markers")
mode="markers"这句话是将这条线的属性定义为点状图
以上是我们使用plotly.graph_objects
模块画的图,代码不是很复杂但是还有一个模块使用起来也是很方便,这个模块是plotly.express
下面就给大家带来这个模块的使用方式。
同样这个模块也需要以列表为形式的数据
import plotly.express as px
fig = px.scatter(data,x='...',y='...')
fig.show()
这个模块写的代码是不是看起开比plotly.graph_objexts
简洁多了
如果我们想画3D的线或者点怎么办,我们还是使用plotly.graph_objects
这个模块
只需要在创建线的时候将scatter该成scatter3d
line = go.Scatter3d(x=data[...],y=data[...],z=data[...],mode="line")
#同样如果我们想画散点图的话我们只要在上述语句中将line该成markers
同样plotly.express
也可以画3d图
import plotly.express as px
fig = px.scatter_3d(data,x="...",y="...",z="...")
绘制面
绘制面的话我们需要将data中的数据存成二维数组,大家想想为什么,这里就不解释了
import plotly.graph_objects as go #我们这里还是使用plotly.graph_objects模块
height = data.values #这句话的意思是将数据以二维数组的方式存储
sur = go.Surface(z = height)
fig.show()
这样我们就将这个面画出来了
如果我们想要画z=x2+y2怎么办呢
我们如果画这个面的话首先我们需要将这个面映射到XY轴上然后以XY轴上的点为基础再根据Z轴的高度绘制成一个面,这个过程有点像高数中的积分,那么下面我们来看看代码是如何实现的吧
import plotly.graph_objects as go
import numpy as np
#我们来画一个XY轴面积为11*11的图
#首先我们需要XY轴各生成(-5,+5)11个数
x=np.arange(-5,6)
y=np.arange(-5,6)
#然后我们需要两个矩阵将这两个一维数组对应起来
xv,yv = np.meshgrid(x,y)
z = xv**2+yv**2
sur = go.Surface(x=xv,y=yv,z=z)
fig = go.Figure(sur)
fig.show()
这样我们就Z=X2+Y2这个图画好了