数据可视化实战——1.展示多级分类数据


前言

大家好✨,这里是bio🦖。这次为大家带来的是多级分类数据的可视化,阅读本文你将学习到
1.如何筛选出你想要的数据
2.数据可视化图像的优化
3.NA值的处理

所用的语言是Python,全部过程及代码在MyGithub,感兴趣的读者可以取看看!


一、数据筛选

数据来源于Virion database,想要跟做的读者可以下载试试,如果访问不了,可能需要挂载VPN。打开数据我们能看到一些缺失值在宿主、病毒以及TaxID,所以首先对数据的筛选可以是选择这四项值存在的数据。

这里有一个值得注意的点,解码方式使用ISO-8859-1能够解决乱码问题。选择这个解码主要还是要看你的数据采用什么方式编码。

import pandas as pd

with open('/home/bio_kang/virus_host_virion/Virion.csv','rb') as f:
    lines = f.readlines()

data_procession = []
for line in lines:
    if len(line) < 34:
        continue
    else:
        data = line.decode('ISO-8859-1').strip('\n').split('\t')

        if data[0] == '' or data[1]=='' or data[2]=='' or data[3] == '' :
            continue
        else:
            data_procession.append(data)



data = pd.DataFrame(data_procession[1:-1],columns=data_procession[0])

处理完后在jupyter里面,可以看到数据如下图
在这里插入图片描述

图一,处理后数据图

二、数据处理

2.1 数据来源统计

Virion数据库的数据来自于别的数据库,对其进行统计有利于了解数据的来源比例(那些数据库的数据更科学可信)。

# library matplotlib
import matplotlib.pyplot as plt

# extract data
data_from = data['Database'].value_counts()

# draw graph
plt.figure(dpi=300,figsize=(24,8)) # set the size and dpi
plt.pie(data_from, explode=(0,0,0,0,0.1,0.2,0.3), autopct='%3.2f%%', pctdistance=1.1) # draw
plt.legend(labels=data_from.index, loc="right", bbox_to_anchor=(1,1)) # legend location
plt.savefig("database_statistic.png", format='png', bbox_inches='tight', dpi=300, transparent=True) # save graph

这些代码都比较容易理解。结果图如下

在这里插入图片描述

图二,数据来源统计图

2.2 分级数据可视化

分级数据的展示方式有很多种,今天介绍的是sunburst旭日图。在绘图之前,要对数据进行处理成绘图需要的格式。

# extract data and remove duplication data
host_data = data['HostTaxID']
host_data = host_data.drop_duplicates()

# write a file
host_taxid = list(host_data)
with open('/home/ouyangkang/Learning/graduation/virus_host/statistic_virion/host.txt','w') as f:
    f.writelines(list(map(lambda x:x+'\n', host_taxid)))

# utilize linux system in jupyter and use "taxonkit" to obtain taxonomic information
import os
os.system(' cat host.txt | /home/ouyangkang/software/anaconda3/envs/bio/bin/taxonkit reformat -I 1 -f "{p};{c};{o};{f};{g};{s}" > taxon_host.txt ')

# convert txt format to csv format
with open("/home/ouyangkang/Learning/graduation/virus_host/statistic_virion/taxon_host.txt", 'r') as f:
    taxon = f.readlines()
taxon_data = []
for line in taxon:
    line = line.strip('\n').split('\t')[1]
    taxon_data.append(line.split(';'))
write_data = pd.DataFrame(taxon_data,columns=["Phylum","Class","Order","Family","Genus","Species"])
write_data.to_csv('taxon_host.csv',index=None)

在这里插入图片描述

图三,分类数据处理后图

然后进行绘图,绘制的还能动,大家可以按照代码绘制试试。

import plotly.express as px
import pandas as pd
import plotly

data_host = pd.read_csv('taxon_host.csv')
data_host = data_host.fillna(value='Unclassfied')
fig = px.sunburst(data,path=['Phylum','Class','Order','Family','Genus'])
fig.show()

plotly.offline.plot(fig,filename='Host_taxon.html')

在这里插入图片描述

图四,分类数据旭日图

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Bio大恐龙

您的打赏是我前进的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值