Python 学习记录 (4)

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

1|0简单介绍:

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

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

1|0说明:

  • 类似'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()

结果:
imageimage


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

1|0说明:

  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()

结果:
日冕图:
image
冰柱图:
image
矩形树状图:
image


__EOF__

本文作者海&贼
本文链接https://www.cnblogs.com/hai-zei/p/18532126.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角推荐一下。您的鼓励是博主的最大动力!
posted @   海&贼  阅读(13)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
点击右上角即可分享
微信分享提示