python中的数据统计,使用matplotlib画直方图,条状图,柱状图,饼图_python如何画棘状图-程序员宅基地

技术标签: python  python学习  

一.统计文本中每种实体的个数

1.ann

2.代码

import os
import re
import pandas as pd
import numpy as np
import random
import math
from datetime import datetime
from matplotlib import pyplot as plt

train_dir='../../siriyang/中医药命名实体识别/dataset/train'
test_dir='../../siriyang/中医药命名实体识别/dataset/chusai_xuanshou'
prepare_dir='./prepare'
def get_entitie(dir):
    entities={} #用来存储实体名,创建为字典类别
    files=os.listdir(dir)
    files=list(set([file.split('.')[0] for file in files if (".ann" in file or ".txt" in file) ]))
    for file in files:
        path=os.path.join(dir,file+'.ann')
        with open(path,'r',encoding='utf8') as f:
            for line in f.readlines():
                name=line.split('\t')[1].split(' ')[0]
                #以\t制表符,为分隔符,取第二位,再在第二位中,以‘ ’空格为分隔符,取第一位,例如第一行取DRUG_EFFICACY
                if name in entities:#统计每个实体的个数
                    entities[name]+=1
                else:
                    entities[name]=1
    return entities
count=get_entitie(train_dir)#调用函数
print(count)
print([i for i in count.keys()])#取出键
print([i for i in count.values()])#取出值

3.结果

二.绘出直方图

def autolabel(rects):
    for rect in rects:
        height =rect.get_height()
        plt.text(rect.get_x() + rect.get_width()/2, height, height, ha='center', va='bottom')#垂直和水平的布局
            #rect.get_x(),1.03*height,'%s' % int(height))
        plt.xticks(range(len(num_list)), name_list, rotation=80)#rotation=80是横坐标的倾斜度
        
name_list = [i for i in count.keys()]
num_list = [i for i in count.values()]
plt.figure(figsize=(10,5))#画布大小
plt.title('Category statistics of entities',fontsize=13)#设置标题,footsize是设置字体大小
plt.xlabel(u'category',fontsize=13)#设置x轴的标题,以及它的字号大小
plt.ylabel(u'quantity',fontsize=13)#设置y轴的标题,以及它的字号
#plt.bar(data[i for i in count.keys()],data[i for i in count.values()],alpha=0.6,width=0.8,facecolor='deeppink',edgecolor='darkblue',w=1,label='number of class')
autolabel(plt.bar(range(len(num_list)),num_list,width=0.8,edgecolor='darkblue',lw=1))#edgecolor:柱子轮廓色;lw:柱子轮廓的宽度;
fig=plt.gcf()
#plt.legend(loc=2)
plt.show()
fig.savefig('./Category statistics of entities.png')#把图例保存到当前的目录上

三,绘出饼状图

import numpy as np
import matplotlib.pyplot as plt
import matplotlib as mpl

def draw_pie(labels,quants):
    plt.figure(1,figsize=(10,10))
    expl = [0,0,0,0,0,0,0,0,0,0,0,0,0]#第五块离开圆心一点点
    colors = ["blue","red","coral","green","yellow","orange"]#设置颜色,可循环显示
    plt.pie(quants,explode=expl,colors=colors,labels=labels,autopct='%1.1f%%',pctdistance=0.8,shadow=True)#autopct:百分数的格式
    plt.title('length of the entity',bbox={'facecolor':'0.8','pad':5})
    fig=plt.gcf()
    plt.show()
    fig.savefig("./pie.jpg")
    plt.close()
    
labels = [i for i in dic.keys()]
quants = [i for i in dic.values()]
draw_pie(labels,quants)

直方图博客链接分享

饼状图链接分享

 

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/Hexiaolian123/article/details/108955826

智能推荐

【Unity】相机跟随主角移动,并带有延迟效果_objective-c移动相机追踪主角-程序员宅基地

文章浏览阅读6k次,点赞2次,收藏4次。相机跟随主角移动,并带有延迟效果using UnityEngine;using System.Collections;namespace CompleteProject{ // 脚本使用在摄像机身上 public class CameraFollow : MonoBehaviour { public Transform player; // 主角位置_objective-c移动相机追踪主角

二阶常微分方程(ODE)的打靶法(Shooting method),有限差分基础(python)_二阶常系数非齐次微分方程打靶法-程序员宅基地

文章浏览阅读1.3w次,点赞17次,收藏91次。第四十九篇 二阶常微分方程的打靶法边界值问题当我们试图用自变量的不同值所提供的信息来解二阶或更高阶的常微分方程时,我们必须使用与前面描述的不同的数值方法。前面提到的初值问题经常涉及到“时间”作为自变量,解决技术要求我们按步骤“前进”,直到达到所需的解。在这种情况下,解的定义域不是有限的,因为原则上我们可以无限地沿着正方向或负方向前进。边值问题涉及一个有限解的区间,在这个区间内去求解。这类问题的自变量通常是空间中测量距离的坐标。一个典型的二阶边值问题可能下面的形式。解的定义域(假设为B >a_二阶常系数非齐次微分方程打靶法

Nacos微服务注册地址为内网IP的解决办法_mapp.clientregisterip nacos-程序员宅基地

文章浏览阅读6.3w次,点赞16次,收藏61次。各个服务通过Nacos客户端将服务信息注册到Nacos上当Nacos服务注册的IP默认选择出问题时,可以通过查阅对应的客户端文档,来选择配置不同的网卡或者IP例如,使用了Spring cloud alibaba作为Nacos客户端,服务默认获取了内网IP `192.168.1.21`,可以通过配置`spring.cloud.inetutils.preferred-networks=10.34.12 `,使服务获取内网中前缀为`10.34.12`的IP_mapp.clientregisterip nacos

第四次工业革命将来自人工智能和物联网。-程序员宅基地

文章浏览阅读385次。毫不奇怪,“关于一切的信息”的概念正在积极地应用于制造业背景。就像他们改变消费品一样,智能,廉价,传感器负载的设备与强大的分析和算法相结合,在过去十年中也在改变工业世界。“物联网”已经到达工厂车间,一个巨大的电子Kool-Aid Man的力量通过煤渣墙爆炸。大数据的分析和机器学习开始变得像匿名商业词汇,但它们不仅仅是过度使用抽象概念 - 这些流行语代表了我们日常生活中处理大部分技术的巨大变化。...

new Promise请求后台的数据返回成功以后,在去执行操作其他操作_new promise 里面包含请求后端接口-程序员宅基地

文章浏览阅读1.7k次,点赞2次,收藏3次。//记录下,如果在一个函数需要保证,请求后台的数据返回成功以后,在去执行操作其他操作//addEnv是axios请求以后封装好的接口function cat(){ return new Promise((reslove,reject)=>{ addEnv({id:1}).then(res=>{ reslove(res) }).catch(error=>{ reject(error) }) })}async function sheep(){ let r_new promise 里面包含请求后端接口

webstrom 的安装-程序员宅基地

文章浏览阅读253次。webstorm是一个前端开发神器。安装webstorm之前需要配置jdk。配置好jdk之后再进行安装webstorm;1.下载链接jdk:http://download.oracle.com/otn-pub/java/jdk/8u73-b02/jdk-8u73-linux-i586.tar.gz?AuthParam=1472692770_2276e0b95c38424d5105a4357..._webstorm需要配置jdk吗

随便推点

Android ADB命令大全_android adb kill service-程序员宅基地

文章浏览阅读2w次,点赞9次,收藏89次。adb的全称为Android Debug Bridge.是android司机经常用到的工具.但是问题是那么多命令写代码已经够费劲了,过段时间在次使用时压根记不住呀.本次的大餐就是为此开篇的.这一次我们不记命令.要用随时过来ctrl+F呀.哇哈哈哈!本篇ADB集锦不管是常用还是冷门的都有.客观您随意看.你能在本篇文章中收获什么?_android adb kill service

IntelliJ IDEA中Tomcat服务器中无Update classes and resources的解决方法_idea 没有update classes and resources-程序员宅基地

文章浏览阅读3.9k次,点赞11次,收藏12次。1.问题描述第一次使用ssm框架发现on “Update” action中没有Update classes and resources选项了,这就是说如果更新静态资源都要重启服务器,在开发过程中十分麻烦,查了一晚上也没有找到bug2.解决办法原来是artifact的问题:Artifacts,它的作用是整合编译后的 java 文件,资源文件等,有不同的整合方式,比如war、jar、war exploded 等,对于 Module 而言,有了 Artifact 就可以部署到 web 容器中了。其中 w_idea 没有update classes and resources

iPhone白苹果-程序员宅基地

文章浏览阅读73次。iPhone遇到了白苹果问题如何解决?

OPPO面试题 笔试题 搜集_oppo嵌入式笔试-程序员宅基地

文章浏览阅读4.2k次。1、面试在校期间,学得最好的专业课程是什么,问课程相关知识C语言内存结构和struct内存对齐最能体现编程功底的项目,项目难点,io操作应该不少吧,io、多线程了解吗?2、笔试3、HR面试学习了哪些课外知识,怎么学习的,学到了什么你觉得你的核心竞争力是什么?为什么把他作为核心竞争力?除了这个,你觉得还有什么竞争力..._oppo嵌入式笔试

Hibernate缓存机制-程序员宅基地

文章浏览阅读712次。缓存是位于应用程序与物理数据源之间,用于临时存放复制数据的内存区域,目的是为了减少应用程序对物理数据源访问的次数,从而提高应用程序的运行性能. Hibernate在查询数据时,首先到缓存中去查找,如果找到就直接使用,找不到的时候就会从物理数据源中检索,所以,把频繁使用的数据加载到缓存区后,就可以大大减少应用程序对物理数据源的访问,使得程序的运行性能明显的提升. Hibernate缓存分类: Session缓存,一级缓

项目使用nacos报错 com.alibaba.nacos.api.exception.NacosException: Param ‘beat‘ is required._com.alibaba.nacos.client.naming.net.namingproxy.ca-程序员宅基地

文章浏览阅读1w次,点赞2次,收藏2次。完整报错:com.alibaba.nacos.api.exception.NacosException: Param 'beat' is required. at com.alibaba.nacos.client.naming.net.NamingProxy.callServer(NamingProxy.java:611) [nacos-client-1.3.3.jar:na] at com.alibaba.nacos.client.naming.net.NamingProxy.req..._com.alibaba.nacos.client.naming.net.namingproxy.callserver(namingproxy.java: