【数据分析/挖掘】【数据可视化-上】入门+代码+实操

本文介绍了Python中的数据可视化工具matplotlib、seaborn、plotly和bqplot,包括基础图形如折线图、散点图、条形图、饼图和直方图的绘制,并探讨了matplotlib的深度定制和plotly的高级功能,以及bqplot的交互式特性。适合数据分析初学者入门。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前言:

在我们开始建模之前,还有最后一个准备步骤需要完成——数据可视化!数据可视化对于数据分析/建模人员来说关键在让别人看得懂。也就是我们使用数据可视化来将一些我们觉得重要的信息进行展示,可以让非技术人员直观的对数据有一个认知。

本一小节内容将会介绍matplotlib、seaborn、plotly、bqplot四种可视化方式,其中matplotlib是底层的可视化三方包,可以自己进行深度定制。seaborn则是对matplotlib的封装,可以更便捷的生成可视化图像,不过模块化带来的就是可定制性不够强。plotly则是对matplotlib、seaborn的补充,因为上面两种可视化方法不能够动态的显示各个数据,所以plotly借助js将数据动态显示。而bqplot则是可以进行交互式可视化。如果你看过我前面的文章,就会发现我在进行讲解生成可交互的图像就是使用的bqplot。

介绍完毕,那么我们现在就走入数据可视化的入门教程吧。

一:基础图的可视化

基础图包括折线图、条形图、饼图、直方图、散点图、箱线图等等统计学中使用到的基础图形,下方是经常使用到的基础图的多种可视化方式及其对比。

1.1 折线图

折线图反映因变量随着自变量变化的变化趋势

1.1.1 matplotlib

import matplotlib as mpl
from matplotlib import pyplot as plt
import numpy as np

x = np.sort(np.random.randn(100))
y = np.sin(x)

# 方式1:使用pyplot的plot方法
plt.plot(x,y)
plt.show()

# 方式二:使用pyplot的subplots方法
fig,ax = plt.subplots()

ax.plot(x,y)
plt.show()

拟合线段

拟合完成后,我们发现图像很单调,既没有标题,也不知道每个轴的意义是什么,那么我们可以对这些图像添加我们需要的信息,这一部分在大部分的可视化包里是通用的,因此这一部分操作在后面属于通用。就不会再单独拎出来讲一遍了。

参数说明:

plt.plot(*args, scalex=True, scaley=True, data=None, **kwargs)
# 注意,只有windows平台可以如此设置,linux是直接修改源文件达到目的,从饼图开始改用ubuntu,所以后面不会再添加中文设置
plt.rcParams['font.sans-serif']=['SimHei']  # 中文字体
plt.rcParams['axes.unicode_minus']=False # 不显示符号

plt.figure(figsize=(16,9)) # 设置图像大小
plt.plot(x,y,'gs-',label='sin-lne',linewidth=1) # 设置绘画格式
plt.xlabel('x-scaler') # 设置x轴标签
plt.ylabel('y-value') # 设置y轴标签
plt.xticks(x[::3],rotation=45) # 设置x轴显示那些数据
plt.title('sin-line') # 设置标题
plt.legend() # 显示图例
plt.show() # 展示图像

pyplot的一些设置
更多内容可以访问我在B站发布的视频  pyplot的一些注意事项和使用

1.1.2 seaborn

import seaborn as sns
import matplotlib.pyplot as plt
import numpy as np

plt.rcParams['font.sans-serif']=['SimHei']  # 中文字体
plt.rcParams['axes.unicode_minus']=False # 不显示符号

x = np.sort(np.random.randn(40))
y = np.sin(x)
sns.lineplot(x,y)
plt.xlabel('这是x轴',fontdict={
   'size':20})
plt.ylabel('这是y轴',fontdict={
   'size':20})
plt.title('随便起个名字',fontdict={
   'size':20})
plt.show()

seaborn折线图

1.1.3 plotly

import plotly as py
import plotly.graph_objs as go
from plotly.graph_objs import Scatter
import numpy as np
import pandas as pd

x = np.sort(np.random.randn(40))
y = np.sin(x)

# 将数据加载到追踪足迹中
trace = Scatter(x=x,y=y,mode='lines',name='一个正弦曲线',line=dict(width=2,color='green'))
data = [trace]
py.offline.iplot(data)

# 将布局追加到图像上
layout = go.Layout(title='这是一条正弦曲线'
                   ,xaxis=dict(title='这是x轴的值')
                   ,yaxis=dict(title='这是y轴的值')
                   ,legend=dict(x=0,y=0.3,font=dict(size=5,color='black')))
fig = go.Figure(data=data,layout=layout)
py.offline.iplot(fig)

plotly折线图

1.1.4 bqplot

from bqplot import pyplot as plt

x = np.sort(np.random.randn(40))
y = np.sin(x)

plt.plot(x,y)
plt.show()
plt.xlabel('这是我后面新加的x轴',fontsize)
plt.ylabel('我还想加个y轴')
plt.title('好像不加个标题说不过去')
plt.xlim(-3,3)

bqplot

1.2 散点图

我们使用折线图将自变量、因变量的关系通过图形直接显示出来,但如果数据本身很杂乱,又没有关系怎么办呢?我们可以使用散点图查看数据点的各自分布关系。

1.2.1 matplotlib

from sklearn.datasets import make_blobs
import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif']=['SimHei']  # 中文字体
plt.rcParams['axes.unicode_minus']=False # 不显示符号

datas = make_blobs(n_samples=100,n_features=2,centers=[[1.,1.],[10.,1.]]) # 生成聚类数据
x = datas[0][:,0]
y = datas[0][:,1]

plt.figure(figsize=[16,12])
plt.scatter(x,y)
plt.xlabel('这是x轴')
plt.ylabel('这是y轴')
plt.xticks(np.arange(-2,12,1),rotation=45)
plt.title('这是两个聚类的散点图')
plt.show()

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-jqqply4g-1589438783684)(https://upload-images.jianshu.io/upload_images/7398758-d3899136ec890b52.gif?imageMogr2/auto-orient/strip)]

1.2.2 seaborn

from sklearn.datasets import make_blobs
import matplotlib.pyplot as plt
import seaborn as sns
import numpy as np

plt.rcParams['font.sans-serif']=['SimHei']  # 中文字体
plt.rcParams['axes.unicode_minus']=False # 不显示符号

# 生成数据
datas = make_blobs(n_samples=100,n_features=2,centers=[[1.,1.],[10.,1.]]) # 生成聚类数据
x = datas[0][:,0]
y = datas[0][:,1]

plt.figure(figsize
人类基因组计划的基本完成表明后基因组时代的到来。 人类积累的大量的生物信息数据为揭开生命奥秘提供了数据基础,生物学研究的热点由对细胞内个别基因或蛋白质功能的局部性研究,转移到以细胞内全部的基因、蛋白质及代谢产物为整体对象的系统研究。对基因调控网络、蛋白质相互作用网络、代谢路径网络等结构及功能模块的检测技术的研究,逐步把分子生物学推入系统生物学时代。 基因与蛋白质通过网状的相互作用产生更高一级的功能模块,所以,通过数学建模来设计有效的算法,在生物网络中进行功能模块的挖掘分析,将有助于更好地研究生物体自身的功能不同生物体之间的进化关系,为分析理解生命基本规律提供依据。 本文对基于图论的经典频繁子图挖掘算法进行了系统的研究全面的总结,在此基础上提出了一种新的挖掘频繁子图的算法,该算法包含子图的搜索算法及同构分类算法。 对子图搜索问题,提出了环分布的概念,并构造了基于环分布的子图搜索算法ESR(EnumerateSubgraphs based on Ring);对子图同构问题,利用度序列特征值构造了两种算法,分别用于对有向图无向图的同构判别;利用同构算法对搜索出的子图进行同构分类,根据分类结果得到频繁子图。 管理毕业论文网www.yifanglunwen.com;音乐毕业论文www.xyclww.com;经济论文www.youzhiessay.com 教育论文www.hudonglunwen.com;医学论文网www.kuailelunwen.com;英语毕业论文www.vipvo.com 当网络规模比较大时,子图数量非常庞大,同构分类的工作量很大,为此又提出了随机归类算法Hamilton子图的挖掘算法,以减少同构分类的运算量。 随机归类算法是通过从子图集中随机地抽取一定数量的子图进行同构分类,是一种近似的算法;Hamilton子图的挖掘算法旨在挖掘特定类型(具有Hamilton回路)的子图,以减少搜索结果集。最后对5个真实生物网络进行了仿真实验研究,找出了不同规模的频繁子图,实验结果表明本文提出的算法优于现有的算法。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值