Plotly常见可视化方案:以鸢尾花数据为例

简单介绍:

  1. Ploty库也有大量统计可视化方案,并且这些可视化方案具有交互化属性。
  2. 主要对鸢尾花数据进行处理与可视化。
  3. 所展示的结果为交互界面的截图情况,这里不能进行交互。

使用Plotly绘制散点图与箱型图,分类展示“花萼宽度”

说明:

  • 类似'species'这个分类标签,使用'Category'分析原始特征数据,如花萼宽带
import seaborn as sns
import pandas as pd
import plotly.express as px df=sns.load_dataset("iris")
df['area']=df['sepal_length']*df['petal_width']
#计算”面积”,其中‘area'为新产生的一列
df['Category']=pd.qcut(df['area'],5,labels=['A','B','C','D','E'])
#pandas.qcut()方法根据’area'大小将数据大致分成5分=份且编号。 list_stats=['min','max','mean','median','std']
stats_by_area=df.groupby('Category')['area'].agg(list_stats)
#这里以Category为参照进行分组,之后对area进行计算统计量
stats_by_area['Range']=stats_by_area['max']-stats_by_area['min']
stats_by_area['Nunber']=df['Category'].value_counts()
#通过个方法相应的数值 #---画出箱型图----
fig = px.box(df,x = 'sepal_length',y = 'Category',
color = 'Category',points='all',
#color指定以什么来区分颜色,points来指明是否画点
template="plotly_white",width=600,height=300,
category_orders={"Category":["A","B","C","D","E"]},
color_discrete_sequence=px.colors.qualitative.Pastel1,
#指定颜色映射的调色板
labels={"sepal_length":"Sepal Length (cm)"})
fig.show() #---画出散点图-----
fig=px.scatter(df,x='sepal_length',y='petal_length',color='Category',
marginal_x='box', marginal_y='box',
#分别在x,y轴的边缘加上箱型图
template="plotly_white",width=600,height=500,
color_discrete_sequence=px.colors.qualitative.Pastel1,
labels={"sepal_length":"Sepal Length (cm)",
"petal_length":"petal Length (cm)"})
fig.show()

结果:


以鸢尾花种类,面积,长度范围,长宽比值为四个维度,并用太阳爆炸,冰柱图,矩形树状图可视化钻取

说明:

  1. 因原始数据没有相关的维度,故需要添加相关的维度
  2. 确定一下钻取顺序情况
  3. 对其进行可视化

import pandas as pd
import seaborn as sns
import plotly.express as px
#---传入数据并对数据进行加工----
df=sns.load_dataset("iris")
df['area']=df['sepal_length']*df['sepal_width']
df['Category']=pd.qcut(df['area'],5,labels=['A','B','C','D','E'])
#上面得到面积,这里根据面积来将数据划分成五等分 labels=["{0}~{1} cm".format(i,i+1) for i in range(4,8)]
#这里将长度也分成四分,为4~5,5~6,下面的right表明右开。
df["sepal_length_bins"]=pd.cut(df.sepal_length,range(4,9),right=False,labels=labels) df['bi']=df['sepal_length']/df['sepal_width']
#以长宽作为依据划分label为每一区域的标签
df['Category1']=pd.qcut(df['bi'],4,labels=['ⅰ','ⅱ','ⅲ','ⅳ']) dims=['species','Category','Category1','sepal_length_bins']#钻取顺序,为日冕图做准备
#下面以sepal_length为数值来源得到概率
prob_matrix_by_4=df.groupby(dims)['sepal_length'].apply(lambda x:x.count()/len(df))
prob_matrix_by_4=prob_matrix_by_4.reset_index()
prob_matrix_by_4.rename(columns={'sepal_length':'Ratio'},inplace=True)
#画出日冕图像
fig=px.sunburst(prob_matrix_by_4,path=dims,
values='Ratio',width=800,height=800)
fig.show()
#通过pd.crosstab方法进行交叉计数,这里列最好为一层,方便后面转化长格式后对count的计数
count_matrix=pd.crosstab(index=[df.species,df.Category,df.Category1],
columns=df.sepal_length_bins,values=df.petal_length,aggfunc='count')
count_matrix=count_matrix.stack().reset_index()
count_matrix.rename(columns={0:'count'},inplace=True)
count_matrix=count_matrix[count_matrix['count']!=0]
#只保留不为0的,冰柱图面对0会报错。
fig=px.icicle(count_matrix,
path=[px.Constant("all"),#在最左侧加入all.
'species','Category','Category1','sepal_length_bins'],
values='count',color_continuous_scale='Blues',
color='count',width=800,height=800)
fig.show() #---画出矩形树状图----
fig=px.treemap(count_matrix,
path=[px.Constant("all"),
'species','Category','Category1','sepal_length_bins'],
values='count',color_continuous_scale='Blues',
color='count',width=800,height=800)
fig.show()

结果:

日冕图:



冰柱图:



矩形树状图:

Python 学习记录 (4)的更多相关文章

  1. Python学习记录day6

    title: Python学习记录day6 tags: python author: Chinge Yang date: 2016-12-03 --- Python学习记录day6 @(学习)[pyt ...

  2. Python学习记录day5

    title: Python学习记录day5 tags: python author: Chinge Yang date: 2016-11-26 --- 1.多层装饰器 多层装饰器的原理是,装饰器装饰函 ...

  3. Python学习记录day8

    目录 Python学习记录day8 1. 静态方法 2. 类方法 3. 属性方法 4. 类的特殊成员方法 4.1 __doc__表示类的描述信息 4.2 __module__ 和 __class__ ...

  4. Python学习记录day7

    目录 Python学习记录day7 1. 面向过程 VS 面向对象 编程范式 2. 面向对象特性 3. 类的定义.构造函数和公有属性 4. 类的析构函数 5. 类的继承 6. 经典类vs新式类 7. ...

  5. Python学习记录:括号配对检测问题

    Python学习记录:括号配对检测问题 一.问题描述 在练习Python程序题的时候,我遇到了括号配对检测问题. 问题描述:提示用户输入一行字符串,其中可能包括小括号 (),请检查小括号是否配对正确, ...

  6. 实验楼Python学习记录_挑战字符串操作

    自我学习记录 Python3 挑战实验 -- 字符串操作 目标 在/home/shiyanlou/Code创建一个 名为 FindDigits.py 的Python 脚本,请读取一串字符串并且把其中所 ...

  7. 我的Python学习记录

    Python日期时间处理:time模块.datetime模块 Python提供了两个标准日期时间处理模块:--time.datetime模块. 那么,这两个模块的功能有什么相同和共同之处呢? 一般来说 ...

  8. Python 学习记录

    记录一些 学习python 的过程 -------------------------------------- 1. 初始学习 @2013年10月6日 今天开始学习python 了 遇到好多困难但是 ...

  9. python学习记录_IPython基础,Tab自动完成,内省,%run命令_

        这是我第一次写博客,之前也有很多想法,想把自己所接触的,以文本的形式储存,总是没有及时行动.此次下定决心,想把自己所学,所遇到的问题做个记录共享给诸位,与此同时自己作为备忘,感谢各位访问我的博 ...

  10. Python学习记录----数据定义

    摘要: 描述Python中数据定义格式,需要注意的东东. 一 数据声明 Python木有一般语言的具体数据类型,像char,int,string这些通通木有.这有点像javascript,但又不同,j ...

随机推荐

  1. ST-SSL: 用于交通流量预测的时空自监督学习《Spatio-Temporal Self-Supervised Learning for Traffic Flow Prediction》(交通流量预测、时空异质性、自监督、数据增强)

    2023年10月23日,继续论文,好困,想发疯. 论文:Spatio-Temporal Self-Supervised Learning for Traffic Flow Prediction Git ...

  2. SQL Server 语句日期格式查找方法

    1. SQL Server中,处理日期格式和查找特定日期格式方法示例 在SQL Server中,处理日期格式和查找特定日期格式的记录是一个常见的需求.SQL Server提供了多种函数和格式选项来处理 ...

  3. CSS – vw, vh, position fixed and ICB (initial containing block)

    什么是 vw, vh? vh 的 v 指的是 viewport, h 就是 height. 它是 CSS 值的单位就像 px, %. .container { height: 30vh; backgr ...

  4. shell脚本参数读取列表文件,循环执行时,要注意这个列表文件转换成 unix 格式

    当报一些很奇怪的错,比如报错多了一个空格,但 vim 看打开没有,比如: 或者肉眼看上去路径正常,但却报路径不存在: 这种时候要使用 dos2unix 工具,把这个列表文件转换一下:

  5. 支付宝 APP登录 获取用户信息 PHP(转)

    转载自:https://blog.csdn.net/wang78699425/article/details/78666401 支付宝 APP登录 获取用户信息 PHP(转) 支付宝APP登录服务端流 ...

  6. Linux如何使用trim命令保持SSD的读写速度

    随着硬盘技术的不断发展何固态硬盘的大量使用,你肯定听说过或者使用过固态硬盘,固态硬盘(或固态硬盘)能够达到比传统硬盘更快的读取和写入数据的速度,您可能不知道的是,随着时间的推移,当磁盘写满时,SSD硬 ...

  7. iOS文本字数动态展示使用小结

    项目开发中经常用到类似这样的功能,文本输入的时候需要动态的显示文本输入字数.这里以多行文本框为例,介绍一下实现方案.核心代码如下 -(void)textViewDidChange:(UITextVie ...

  8. fastjson序列化导致prometheus返回监控数据格式错乱

    在springboot 中集成prometheus的监控时遇见问题. 因为项目里在StaticResourceConfig配置了fastjson 序列化,导致prometheus接口返回数据被转化为j ...

  9. Gitlab私有存储库支持SourceLink 调试之使用proxy方式

    前情概要 在 让你发布的nuget包支持源代码调试#为gitlab的私有源代码项目提供支持 小节中有介绍到如何让gitlab的私有存储库支持SourceLink. 其中有一个方法是说在vs中打开web ...

  10. python多线程应用-批量下载拉勾网课程

    import concurrent import os import re import time from collections.abc import Iterable from Crypto.C ...