引入类库:
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)
flights = sns.load_dataset("flights")
flights.head()
这里使用的是seaborn
自带数据库,可能会出现报错IncompleteRead
,解决方法:
1、csv文件下载地址,点击下载。
2、将下载后的fights.csv拷贝放入seaborn-data文件夹。
查看数据类型:flights.info()
热力图需要三个数据。
fig = px.density_heatmap(flights, x ='year' , y ='month' , z= 'passengers')
换个颜色: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')
对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")
fig = px.line_3d(flights , x ='year' , y ='month' , z= 'passengers' ,color='year') # color='year'表示每一年的数据用不同颜色
这和热力图反应的一致,随着年份增加,人数也在增加。7月数据一般最大的。
如果只看这么几年的数据,那么显示的变化规律会更加直观。
fig = px.scatter_3d(flights , x ='year' , y ='month' , z= 'passengers' ,color='year')
但是有些时候,我们希望用2D的图把3D图的信息展示出来,刚才案例的数据3D图涉及到x,y,z三组变量,如果用2D展示,则需要把xy,xz,yz的关系用三张图绘制出来。这里需要使用到scatter_matrix
功能。
fig = px.scatter_matrix(flights,color="month")
接下来我们用机器学习的经典数据Iris花卉数据集再做一次可视化分析。
Iris数据包括了三种鸢尾花的4个不同维度的属性值。我们希望通过数据集把三种种类的花分开。
df = px.data.iris()
df.head()
fig = px.scatter_matrix(df,color="species")
可以看到,使用petal_length和petal_width绘制分的是比较开的。
所以用这两个元素单独绘制一下散点图:
fig = px.scatter(df , x ='petal_length' , y='petal_width' , color='species' )
发现,这张图给的信息还不够多,所以我们再增加一个区分:size='petal_length'
fig = px.scatter(df , x ='petal_length' , y='petal_width' , color='species', size='petal_length')
会发现setosa比较小,virginica比较大,这张图可以把蓝色分出来,红色和绿色中间有重叠,分开比较复杂。所以可以试一试3D。
fig = px.scatter_3d(df , x ='petal_length' , y='petal_width' ,z='sepal_width' , color='species' ,size='petal_length')
使用自带数据库2007年gdp数据:
df = px.data.gapminder().query("year == 2007")
df.head()
fig = px.scatter_geo(df,locations="iso_alpha")
# locations='iso_alpha'表示自动适配地理信息
# 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')
可以用的投影模式有:
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