matplotlib 散点图_Matplotlib+Seaborn:一文掌握Python可视化库的两大王者

论坛 期权论坛 编程之家     
选择匿名的用户   2021-5-28 22:00   11   0
全文共 3576字,预计学习时长 10分钟或更长
9666f52804d530cc40a665a9cdb967f3.png

Seaborn和Matplotlib是Python最强大的两个可视化库。Seaborn其默认主题让人惊讶,而Matplotlib可以通过其多个分类为用户打造专属功能。

790477c8adddba13fad42bb1d69d1425.png

Python提供了各种用于绘制数据的包。本教程将使用以下两种包来演示Python的绘图功能:

· Matplotlib

· Seaborn

b3d1926d8b9944435a7d01382cd97b08.png

Matplotlib

importmatplotlib.pyplot as plt

%matplotlib inline

import numpy as np

在上面的代码块中,将Pyplot模块调整为plt格式并导入Matplotliib库。这样做可以简化执行命令的过程,具体内容会在本篇教程中看到。PyPlot包含创建和编辑绘图所需的一系列命令。操作时同时运行%matplotlibinline,那么绘图下方就能自动显示代码块,否则用户每次绘图时都需要输入plt.show()来创建新图。此功能是Jupyter Notebook / IPython独有的。Matplotlib拥有定制的代码块结构,这使得它比其他绘图库更先进。接下来看看如何使用matploblib生成散点图。

提示:当使用matplotlib时,文本输出无法带来视觉上的吸引力。为了解决这个问题,我们在执行代码块生成图片时会在每一行代码末端添加分号“;”。

我们使用的数据库是UCI机器学习库中的共享单车数据集。

Matplotlib: 散点图

散点图是各种示意图中影响力最广、信息量最大、功能最多的一类图。它可以直接向用户传递信息,无需太多额外工作(如下图所示)。

· plt.scatter()将输入的散点图上的数据作为初始参数,其中temp指x轴,cnt指y轴。

· c指的是不同数据点的颜色。输入一个字符串“季节”,它也表示数据帧中的一列,不同颜色对应不同季节。该方法用可视化方法对数据分组,十分简单便捷。

plt.scatter('temp','cnt', data=day, c='season')

plt.xlabel('NormalizedTemperature', fontsize='large')

plt.ylabel('Countof Total Bike Rentals', fontsize='large');

efbdafe6a3dd74c9965b31aedd657cd3.png

图上信息显示:

· 某些时间点的自行车租赁量超过8000辆。

· 标准温度超过0.8。

· 自行车租赁量与温度或季节无关。

· 自行车租赁量与标准温度之间含有正线性关系。

这个图的确含有大量信息,然而图表并不能产生图例,因此我们很难对各组季节数据进行破译。这是因为用散点图绘图时,Matplotlib无法根据绘图制作图例。下一节中,我们将会看到该图如何隐藏信息,甚至误导读者。

看看经过彻底编辑后的绘图。该图旨在根据不同组别绘制图例,并进行破译。

plt.rcParams['figure.figsize']= [15, 10]

fontdict={'fontsize':18,

'weight' : 'bold',

'horizontalalignment': 'center'}

fontdictx={'fontsize':18,

'weight' : 'bold',

'horizontalalignment': 'center'}

fontdicty={'fontsize':16,

'weight' : 'bold',

'verticalalignment': 'baseline',

'horizontalalignment': 'center'}

spring =plt.scatter('temp', 'cnt', data=day[day['season']==1], marker='o',color='green')

summer =plt.scatter('temp', 'cnt', data=day[day['season']==2], marker='o', color='orange')

autumn =plt.scatter('temp', 'cnt', data=day[day['season']==3], marker='o',color='brown')

winter =plt.scatter('temp', 'cnt', data=day[day['season']==4], marker='o',color='blue')

plt.legend(handles=(spring,summer,autumn,winter),

labels=('Spring', 'Summer','Fall/Autumn', 'Winter'),

title="Season

分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:3875789
帖子:775174
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP