数据可视化分析2.8

数据可视化分析2.8

  • Plotly部分
    • 动态数据图的使用
      • 使用普通散点图
      • 使用动态散点图
      • 使用普通柱状图
      • 使用动态柱状图
      • 动态密度图
      • 动态热力图
      • 动态地理信息图

Plotly部分

动态数据图的使用

使用普通散点图

首先导入各种类库

import pandas as pd
import numpy as np
import chart_studio.plotly as py
import cufflinks as cf
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)

导入px自带数据集:

df_cnt = px.data.gapminder()
df_cnt.head()

数据可视化分析2.8_第1张图片
绘制散点图看一看gdpPercap和lifeExp的相关性:

px.scatter(df_cnt,x='gdpPercap' , y = "lifeExp" )

数据可视化分析2.8_第2张图片
这里会发现数据叠在一起,不能分清楚各个国家之前情况如何,所以用颜色区分开:

px.scatter(df_cnt,x='gdpPercap' , y = "lifeExp" ,color='continent')

数据可视化分析2.8_第3张图片
这里会发现还是不容易区分,所以可以使用之前用过的一个办法——用科学计数法。

px.scatter(df_cnt,x='gdpPercap' , y = "lifeExp" ,color='continent' ,log_x =True)

数据可视化分析2.8_第4张图片
我们还想点到这个点上可以看到具体国家信息:

px.scatter(df_cnt,x='gdpPercap' , y = "lifeExp" ,color='continent' ,log_x =True , hover_name="country")

数据可视化分析2.8_第5张图片
其实这张图依然比较杂乱,因为有几十年的数据,如果可以分开展示就会很好,这里就需要使用动态数据图。

使用动态散点图

px.scatter(df_cnt,x='gdpPercap' , y = "lifeExp" ,color='continent' ,log_x =True , hover_name="country",
          animation_frame="year")
#animation_frame="year"表示按年播放

数据可视化分析2.8_第6张图片
拖动下方滑块或者点击播放键可以播放每一年的数据情况。但是会发现随着时间增加,点会溢出表格,这是因为没有设置动态y轴。
一次性把动态x轴和动态y轴都加上:

px.scatter(df_cnt,x='gdpPercap' , y = "lifeExp" ,color='continent' ,
           log_x =True , hover_name="country",animation_frame="year",range_x=[100,100000],
           range_y=[25,90])

这里还会存在一个问题,gdp实际的大小并不清晰,比如紫色和其他颜色到底gdp情况如何呢?所以可以调整size参数,用人口数量来区分。

px.scatter(df_cnt,x='gdpPercap' , y = "lifeExp" ,color='continent' ,
           log_x =True , hover_name="country",animation_frame="year",range_x=[100,100000],
           range_y=[25,90],size='pop',size_max=60)

数据可视化分析2.8_第7张图片

使用普通柱状图

px.bar(df_cnt,x='continent' , y='pop')

数据可视化分析2.8_第8张图片

发现这里指上去不能看到这个柱子代表什么国家。所以增加hover_name="country"

px.bar(df_cnt,x='continent' , y='pop',hover_name="country")

数据可视化分析2.8_第9张图片

使用动态柱状图

px.bar(df_cnt,x='continent' , y='pop' , hover_name='country' ,color='continent' ,
       animation_frame='year')

这里也会涉及到y轴显示问题,所以设计一下y轴范围:

px.bar(df_cnt,x='continent' , y='pop' , hover_name='country' ,color='continent' ,
       animation_frame='year',range_y=[0,4000000000],animation_group='country')
# 这里的animation_group='country'类似MySQL中的groupby,表示按国家分组

数据可视化分析2.8_第10张图片

动态密度图

fig = px.density_contour(df_cnt, x="gdpPercap", y="lifeExp", color="continent", marginal_y="histogram",
                        animation_frame='year', animation_group='country', range_y=[25,100])

数据可视化分析2.8_第11张图片

动态热力图

fig = px.density_heatmap(df_cnt, x="gdpPercap", y="lifeExp", marginal_y="histogram",
                        animation_frame='year', animation_group='country', range_y=[25,100])

数据可视化分析2.8_第12张图片

动态地理信息图

gapminder = px.data.gapminder()
px.choropleth(gapminder,               
              locations="iso_alpha",               
              color="lifeExp",
              hover_name="country",  
              animation_frame="year",    
              color_continuous_scale='Plasma',  
              height=600             
)

数据可视化分析2.8_第13张图片
再用地图探究一下某地区犯罪率变化趋势:

df = pd.read_csv('CrimeStatebyState_1960-2014.csv')
df.head()

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

px.choropleth(df, 
              locations = 'State_code',
              color="Murder_per100000", # 用每10万人犯罪数量区别
              animation_frame="Year",
              color_continuous_scale="oranges",
              locationmode='USA-states', # 自带国家边界的geojson数据
              scope="usa",
              range_color=(0, 20),
              title='Crime by State',
              height=600
             )

数据可视化分析2.8_第15张图片

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

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