数据可视化分析2.6

数据可视化分析2.6

  • Plotly部分
    • 利用heatmap绘制热力图
      • 利用Pandas导入数据
      • 绘制热力图
      • 用histogram方式统计
      • 用3D折线图反应热力图
    • 利用scatter绘制散点图
    • 利用scatter_matrix绘制散点矩阵
    • 利用scatter_geo绘制地理散点图
      • 利用px自带数据库
      • 绘制地理信息图

Plotly部分

利用heatmap绘制热力图

引入类库:

import pandas as pd
import numpy as np
import chart_studio.plotly as py
import seaborn as sns
import plotly.express as px
%matplotlib inline #代表所有绘制的图表都内嵌在网页中
from plotly.offline import download_plotlyjs, init_notebook_mode, plot, iplot
init_notebook_mode(connected=True)

利用Pandas导入数据

flights = sns.load_dataset("flights")
flights.head()

这里使用的是seaborn自带数据库,可能会出现报错IncompleteRead,解决方法:
1、csv文件下载地址,点击下载。
2、将下载后的fights.csv拷贝放入seaborn-data文件夹。

数据可视化分析2.6_第1张图片
查看数据类型:flights.info()
数据可视化分析2.6_第2张图片

绘制热力图

热力图需要三个数据。

fig = px.density_heatmap(flights, x ='year' , y ='month' , z= 'passengers')

数据可视化分析2.6_第3张图片
换个颜色:color_continuous_scale='配色器'
可选:One of the following named colorscales:
[‘aggrnyl’, ‘agsunset’, ‘algae’, ‘amp’, ‘armyrose’, ‘balance’,
‘blackbody’, ‘bluered’, ‘blues’, ‘blugrn’, ‘bluyl’, ‘brbg’,
‘brwnyl’, ‘bugn’, ‘bupu’, ‘burg’, ‘burgyl’, ‘cividis’, ‘curl’,
‘darkmint’, ‘deep’, ‘delta’, ‘dense’, ‘earth’, ‘edge’, ‘electric’,
‘emrld’, ‘fall’, ‘geyser’, ‘gnbu’, ‘gray’, ‘greens’, ‘greys’,
‘haline’, ‘hot’, ‘hsv’, ‘ice’, ‘icefire’, ‘inferno’, ‘jet’,
‘magenta’, ‘magma’, ‘matter’, ‘mint’, ‘mrybm’, ‘mygbm’, ‘oranges’,
‘orrd’, ‘oryel’, ‘oxy’, ‘peach’, ‘phase’, ‘picnic’, ‘pinkyl’,
‘piyg’, ‘plasma’, ‘plotly3’, ‘portland’, ‘prgn’, ‘pubu’, ‘pubugn’,
‘puor’, ‘purd’, ‘purp’, ‘purples’, ‘purpor’, ‘rainbow’, ‘rdbu’,
‘rdgy’, ‘rdpu’, ‘rdylbu’, ‘rdylgn’, ‘redor’, ‘reds’, ‘solar’,
‘spectral’, ‘speed’, ‘sunset’, ‘sunsetdark’, ‘teal’, ‘tealgrn’,
‘tealrose’, ‘tempo’, ‘temps’, ‘thermal’, ‘tropic’, ‘turbid’,
‘turbo’, ‘twilight’, ‘viridis’, ‘ylgn’, ‘ylgnbu’, ‘ylorbr’,
‘ylorrd’]
选择viridis试试。

fig = px.density_heatmap(flights, x ='year' , y ='month' , z= 'passengers' , color_continuous_scale='viridis')

数据可视化分析2.6_第4张图片

用histogram方式统计

对x和y轴包含数据总数进行统计计数,需要使用marginal_x="histogram" ,marginal_y="histogram"

fig = px.density_heatmap(flights, x ='year' , y ='month' , z= 'passengers' ,marginal_x="histogram"   ,marginal_y="histogram")

数据可视化分析2.6_第5张图片

用3D折线图反应热力图

fig = px.line_3d(flights , x ='year' , y ='month' , z= 'passengers' ,color='year') # color='year'表示每一年的数据用不同颜色


这和热力图反应的一致,随着年份增加,人数也在增加。7月数据一般最大的。
数据可视化分析2.6_第6张图片
如果只看这么几年的数据,那么显示的变化规律会更加直观。

利用scatter绘制散点图

fig = px.scatter_3d(flights , x ='year' , y ='month' , z= 'passengers' ,color='year')

数据可视化分析2.6_第7张图片
这个和折线图表现的结果类似。

利用scatter_matrix绘制散点矩阵

但是有些时候,我们希望用2D的图把3D图的信息展示出来,刚才案例的数据3D图涉及到x,y,z三组变量,如果用2D展示,则需要把xy,xz,yz的关系用三张图绘制出来。这里需要使用到scatter_matrix功能。

fig = px.scatter_matrix(flights,color="month")

数据可视化分析2.6_第8张图片
接下来我们用机器学习的经典数据Iris花卉数据集再做一次可视化分析。
Iris数据包括了三种鸢尾花的4个不同维度的属性值。我们希望通过数据集把三种种类的花分开。

df = px.data.iris()
df.head()

数据可视化分析2.6_第9张图片
用刚才的散点矩阵来分析一下:

fig = px.scatter_matrix(df,color="species")

数据可视化分析2.6_第10张图片
可以看到,使用petal_length和petal_width绘制分的是比较开的。
所以用这两个元素单独绘制一下散点图:

fig  = px.scatter(df , x ='petal_length' , y='petal_width' , color='species' )

数据可视化分析2.6_第11张图片
发现,这张图给的信息还不够多,所以我们再增加一个区分:size='petal_length'

fig  = px.scatter(df , x ='petal_length' , y='petal_width' , color='species', size='petal_length')

数据可视化分析2.6_第12张图片
会发现setosa比较小,virginica比较大,这张图可以把蓝色分出来,红色和绿色中间有重叠,分开比较复杂。所以可以试一试3D。

fig  = px.scatter_3d(df , x ='petal_length' , y='petal_width' ,z='sepal_width' , color='species' ,size='petal_length')

数据可视化分析2.6_第13张图片
3D图发现在空间上会存在某个切面可以把三者分开。

利用scatter_geo绘制地理散点图

利用px自带数据库

使用自带数据库2007年gdp数据:

df = px.data.gapminder().query("year == 2007")
df.head()

数据可视化分析2.6_第14张图片

绘制地理信息图

fig = px.scatter_geo(df,locations="iso_alpha")
# locations='iso_alpha'表示自动适配地理信息

数据可视化分析2.6_第15张图片
为了让显示更加具有辨识度,增加其他参数:

# color="continent"表示按洲不同颜色不同
# hover_name="lifeExp"表示显示数据集中lifeExp数值
# size='pop'表示用数据集中pop数据区别大小
# projection='orthographic'表示用地球投影模式
fig = px.scatter_geo(df,locations="iso_alpha",color="continent",hover_name="lifeExp",size='pop',projection='orthographic')

数据可视化分析2.6_第16张图片
可以用的投影模式有:
One of the following enumeration values:
[‘equirectangular’, ‘mercator’, ‘orthographic’, ‘natural
earth’, ‘kavrayskiy7’, ‘miller’, ‘robinson’, ‘eckert4’,
‘azimuthal equal area’, ‘azimuthal equidistant’, ‘conic
equal area’, ‘conic conformal’, ‘conic equidistant’,
‘gnomonic’, ‘stereographic’, ‘mollweide’, ‘hammer’,
‘transverse mercator’, ‘albers usa’, ‘winkel tripel’,
‘aitoff’, ‘sinusoidal’]

系列文章:
matplotlib中文字体不显示解决办法
利用matplotlib绘制各类图表
数据可视化分析2.1
数据可视化分析2.2
数据可视化分析2.3
数据可视化分析2.4
数据可视化分析2.5

你可能感兴趣的:(可视化,数据库,python,数据可视化,数据分析)