文章目录

  • 一.简介
  • 二.各图运用
    • 1.柱状图
    • 2.散点图
    • 3.冒泡散点图
    • 4.旭日图
    • 5.地图图形
  • 三.实战案例

一.简介

发展由来:
  随着信息技术的发展和硬件设备成本的降低,当今的互联网存在海量的数据,要想快速从这些数据中获取更多有效的信息,数据可视化是重要的一环。对于Python语言来说,比较传统的数据可视化模块是Matplotlib,但它存在不够美观、静态性、不易分享等缺点,限制了Python在数据可视化方面的发展。
  为了解决这个问题,新型的动态可视化开源模块Plotly应运而生。由于Plotly具有动态、美观、易用、种类丰富等特性,所以一经问世就受到开发人员的喜爱。
  
简要说明
  Plotly是Python 库中一种互动,开源绘图库,也是基于javascript的绘图库,支持 40 多种独特的图表类型,效果美观,其中涵盖各种统计、财务、地理、科学和三维用例。
  有在线和离线模式,易于保存与分享plotly的绘图结果,并且可以与Web无缝集成;
  ploty默认的绘图结果,是一个HTML网页文件,通过浏览器可以直接查看;

二.各图运用

安装

pip install plotly

下面均在Jupyter Notebook中运行

数据源

import plotly
import plotly.express as px
import plotly.graph_objects as go
import plotly.io as pio
import pandas as pd
import numpy as np# plotly内置了数据集,方便大家不受数据分析思路的背景下,练手用
df=px.data.gapminder()
df.head()

运行结果:

1.柱状图

# 绘制中国历年人口变化图
# df_country=df.query('country=="China"')
df_country=df[df['country']=='China']
# 柱状图展示
fig=px.bar(df_country,  # 数据源x='year',  # 横坐标:年份y='pop',  # 纵坐标:人口text='pop',  # 说明:人口color='lifeExp',  # 颜色取值:根据平均寿命的值来取hover_name='year', #控制点名称:年份)
fig

运行结果:

# 注释标题
fig.update_layout(title_text='中国人口变迁史',title_x=.5,font=dict(family='simsun',size=14,color='#1d39c4'))
# 注释坐标轴
fig.update_layout(xaxis_title='年份',yaxis_title='人口数量')fig

运行结果:

#柱形图文字格式
fig.update_traces(textposition='outside',texttemplate='%{text:,.2s}')fig

运行结果:

#利用customdata增加数据集
fig.update_traces(customdata=df[['lifeExp','gdpPercap']])
fig.update_traces(hovertemplate='Year: %{x}<br><br> Population: %{y}<br> Life Expectation: %{customdata[0]:,.2f}<br>GDP per capital: %{customdata[1]:,.2f}')
# 坐标轴tick设置
fig.update_xaxes(tickangle=-45,tickfont=dict(family='arial',size=12))fig

运行结果:

# 设置间隙大小及文本大小
fig.update_layout(bargap=.4,uniformtext_minsize=8,uniformtext_mode='show')
# 设置注释
fig.add_annotation(x='1982',y=1000281000,text='突破10亿',font=dict(color='red'))
fig.update_annotations(dict(xref='x',yref='y',showarrow=True),arrowcolor='red',arrowhead=4)
fig.show()

运行结果:

2.散点图

df_2007 = df[df["year"] == 2007]
df_2007

运行结果:

# 散点图
px.scatter(df_2007,   # 数据集x="gdpPercap",  # 横坐标:人均GDPy="lifeExp",  # 纵坐标:平均寿命color="continent"  # 颜色取值:根据洲的值来取)

运行结果:

选择一个区域,能将其放大

3.冒泡散点图

# 冒泡散点图
px.scatter(df_2007,   # 绘图DataFrame数据集x="gdpPercap",  # 横坐标y="lifeExp",  # 纵坐标color="continent",  # 区分颜色size="pop",  # 区分圆的大小size_max=60,  # 散点大小hover_name="country"  # 控制点名称)

运行结果:

4.旭日图

# 旭日图
px.sunburst(df_2007,   # 绘图数据path=['continent', 'country'],  # 指定路径:从洲到国家values='pop', # 数据大小:人口数color='lifeExp',  # 颜色hover_data=['iso_alpha'] # 显示数据)

运行结果:

5.地图图形

# 设置地图的图形
px.choropleth(df,  # 数据locations="iso_alpha",  # 简称color="lifeExp",  # 颜色取值hover_name="country",  # 悬停数据animation_frame="year",  # 播放按钮设置color_continuous_scale=px.colors.sequential.Plasma,  # 颜色变化取值projection="natural earth"  # 使用的地图设置
)

运行结果:

三.实战案例

使用泰坦里克号生存为例

import plotly
import plotly.express as px
import plotly.graph_objects as go
import plotly.io as pio
import pandas as pd
import numpy as np
#数据读取
path1='./dataSet/test.csv'
path2='./dataSet/train.csv'
test=pd.read_csv(path1)
train=pd.read_csv(path2)
#数据合并
data=pd.concat([test,train])

运行结果:

# 展示数据中survived分布情况
df1=pd.DataFrame(data=data['Survived'].value_counts())
df1

运行结果:

fig1=px.bar(df1,y='Survived',text='Survived',color_discrete_sequence=[['#B4C7EC','#14A577']])
fig1.update_layout(title='Survival Status in Titanic',title_x=.5,xaxis_title='Passenger survival status',yaxis_title='Numbers',font=dict(family='arial',color='#000000',size=12),bargap=.5)
fig1.update_xaxes(tick0=0,  #设置X轴起点,防止从负数开始dtick=1,   #设置间隔,防止出现0.5间隔tickvals=[0,1], #设置tick数值,为了重命名ticktext=['Drowned','Suvived'],#重命名系列indextickfont=dict(family='arial',color='#000000',size=14))
fig1.update_yaxes(range=[0,650]) #设置Y轴区间,使图形不至于视觉上压迫
fig1.update_traces(textposition='outside',textfont_size=16,textfont_color=['#8C1004','#007046'])
fig1.show()

运行结果:

# 以survived 与sex为例,展示各性别下,生存与死亡的相对关系。
df_sex=pd.DataFrame(data=data.groupby(['Survived','Sex'])['PassengerId'].count())
df_sex=df_sex.reset_index()
df_sex

运行结果:

fig_sex1=px.bar(df_sex,x='Survived',y='PassengerId',color='Sex',barmode='group',text='PassengerId',color_discrete_map={'female':'#F17F0B','male':'#0072E5'})fig_sex1.update_traces(textposition='outside',textfont_size=14,textfont_color=['#8C1004','#007046'])fig_sex1.update_xaxes(tickvals=[0,1], #设置tick数值,为了重命名ticktext=['Drowned','Suvived'],#重命名系列indextickfont=dict(family='arial',color='#000000',size=14)) fig_sex1.update_layout(title='Overall Suvival in terms of Sex',title_x=.5,bargap=.35,  xaxis_title='',yaxis_title='Numbers of Passengers',font=dict(family='arial',color='#000000',size=13))fig_sex1.update_yaxes(range=[0,500],dtick=100)fig_sex1.show()

运行结果:

fig_sex2=px.bar(df_sex,x='Sex',y='PassengerId',facet_col='Survived',text='PassengerId',color_discrete_sequence=[['#F17F0B','#0072E5']])fig_sex2.update_traces(textposition='outside',textfont_size=14,)fig_sex2.update_layout(title='Overall Suvival in terms of Sex',title_x=.5,bargap=.35,  yaxis_title='Numbers of Passengers',font=dict(family='arial',color='#000000',size=13),)
#取消自带sex标题
fig_sex2.update_layout(xaxis=dict(title=''),xaxis2=dict(title=''))
fig_sex2.update_yaxes(range=[0,500],dtick=100)fig_sex2.for_each_annotation(lambda a:a.update(text=a.text.replace('Survived=0.0','Drowned')))
fig_sex2.for_each_annotation(lambda a:a.update(text=a.text.replace('Survived=1.0','Suvived')))fig_sex2.update_layout(annotations=[dict(font=dict(size=16,color='#002CB2'))])
fig_sex2.show()

运行结果:

# 以survived 与pclass为例,展示各舱位等级下,生存与死亡的相对关系。
df_pclass=pd.DataFrame(data=data.groupby(['Survived','Pclass'])['PassengerId'].count())
df_pclass=df_pclass.reset_index()
df_pclass

运行结果:

fig_sex1=px.bar(df_pclass,x='Survived',y='PassengerId',color='Pclass',barmode='group',text='PassengerId',color_discrete_map={'1':'#F17F0B','2':'#0072E5','3':'#8C1004'})fig_sex1.update_traces(textposition='outside',textfont_size=14,textfont_color=['#8C1004','#007046'])fig_sex1.update_xaxes(tickvals=[0,1], #设置tick数值,为了重命名ticktext=['Drowned','Suvived'],#重命名系列indextickfont=dict(family='arial',color='#000000',size=14)) fig_sex1.update_layout(title='Overall Suvival in terms of Pclass',title_x=.5,bargap=.35,  xaxis_title='',yaxis_title='Numbers of Passengers',font=dict(family='arial',color='#000000',size=13))fig_sex1.update_yaxes(range=[0,500],dtick=100)fig_sex1.show()

运行结果:

可视化工具--Plotly相关推荐

  1. python3数据可视化软件_Python数据可视化工具Plotly

    大家好,今天小编给大家带来的一款工具是数据在线可视化工具---Plotly. Plotly简介 Plotly是一款使用JavaScript开发的制图工具,提供了与主流数据分析语言交互的API(如:Py ...

  2. 推荐10个零代码数据可视化工具,请收藏

    什么是数据可视化? 数据可视化是将定量数据转换为图形的艺术,例如图表.图形.表格或信息图表. 数据可视化的目标是为接收者提供全面而易于理解的信息展示,无论是一小部分基本指标,还是需要可视化的大量大数据 ...

  3. ​Python数据可视化工具怎么选?深度评测5款实用工具

    来源:早起Python 本文约3100字,建议阅读9分钟 本文通过真实绘图,为你深度测评Python五大数据可视化库. [ 导读 ]相信很多读者学习Python就是希望做出各种酷炫的可视化图表,当然你 ...

  4. python在线工具-6 种 Python 数据可视化工具

    原标题:6 种 Python 数据可视化工具 英文:Chris Moffitt,编译:伯乐在线/李加庆 简介 在 Python 中,将数据可视化有多种选择,正是因为这种多样性,何时选用何种方案才变得极 ...

  5. 深度学习可视化工具visdom使用

    文章目录: 1 visdom 1.1 vidsom介绍 2 visdom中的一些概念 2.1 窗口(Windows) 2.2 回调(callbacks) 2.3 环境Environments 2.3. ...

  6. 【深度学习】PyTorch深度学习训练可视化工具visdom

    PyTorch Author:louwill Machine Learning Lab 在进行深度学习实验时,能够可视化地对训练过程和结果进行展示是非常有必要的.除了Torch版本的TensorBoa ...

  7. 52个实用的数据可视化工具!

    来源丨原力大数据 从数据获得信息的最佳方式之一是,通过视觉化方式,快速抓住要点信息.另外,通过视觉化呈现数据,也揭示了令人惊奇的模式和观察结果,是不可能通过简单统计就能显而易见看到的模式和结论. 目前 ...

  8. 探索性数据分析,这8个流行的 Python可视化工具就够了

    来源 / 机器之心  作者 / Aaron Frederick 参与 / 李诗萌.王淑婷 Matplotlib.Seaborn 和 Pandas ggplot(2) Bokeh Plotly Pyga ...

  9. Python之分享常用的五款动态数据可视化工具

    一.Tableau 世界知名的 BI 工具,以超强的可视化能力著称.它已经成为商业 BI 界的 TOP 选手,很多大型公司像阿里.谷歌都在使用,能快速搭建数据系统. 可以通过设置页面动画,来制作动态可 ...

最新文章

  1. 底板芯片组与内存映射(Motherboard Chipsets and the Memory Map) 【转】
  2. [转]python的requests发送/上传多个文件
  3. Oracle学习笔记:创建logical standby
  4. SpringSecurity注销功能
  5. 跨界会对电商行业造成什么影响
  6. loadrunner脚本中参数有中文时报错
  7. 【Spark】开发Spark选择Java还是Scala?
  8. 开挂程序员 Pat Gelsinger 如何重整英特尔?
  9. java获取达梦数据库_记一次对达梦数据库的优化过程
  10. 静静期待 Windows 7 的到来
  11. C/C++[codeup 1397,2020]查找
  12. 游戏公司架构和游戏开发流程概述
  13. 测试创新——用户体验测试(UAT)
  14. Qt On Android 一键加QQ群
  15. TZT3826E静态信号测试分析系统
  16. 2D变形效果有几种?变形效果讲解
  17. 求生之路服务器未响应,求生之路2玩起来速度快,但是过几秒后,就卡住显示未响应,这是为什么...
  18. fortran中如何提供计算程序运行时间?
  19. Centos 安装sl 命令
  20. Java 使用Virtual Serial Port Driver及Modsim32进行modbus-rtu协议模拟(从机)并使用java当做主机(Maven项目)进行从机信息获取及修改

热门文章

  1. C++ vector中删除元素
  2. Maven failed to download xxx.jar
  3. OSC源创会(西安)图文总结
  4. 使用正则限制输入框只能输入英文和数字
  5. 用matlab求方程解的三种方法
  6. 解决论文写作排版中,两端对齐导致文字间距被word补过大的问题
  7. 杂谈:SDWAN二级运营商的大杀器 1
  8. CS5265方案应用|TYPEC投屏方案| Type-C转HDMI4K60HZ转换方案
  9. js 获取上下文后面的路径_通过在数据后面显示上下文来可视化公众意见
  10. 程序员迎娶白富美的唯一出路是什么? 认真用心写代码