python画图添加数据标签,python plt显示图片

  python画图添加数据标签,python plt显示图片

  本文主要介绍python在绘图时如何标注图形中的点,以及如何使用plt.text,在使用matplotlib模块绘制各城市NCOV疫情确诊病例数和节前流入人数的图形时,要标注图形中的点,有需要的朋友可以参考一下。

  背景:

  今天用matplotlib模块绘制各城市NCOV疫情确诊人数和节前流入人数的地图时,遇到需要标注地图中的点,原来是这样的。

  现在,我们必须标出哪些城市是分散的,即下面这种图:.

  标记matplotlib模块有两个关键函数:matplotlib.pyplot.text()和matplotlib.pyplot.annotate()。后者适用范围更广。今天主要说一下之前的matplotlib.pyplot.text(),缩写为plt.text()。

  准备知识:

  这里重点介绍一下plt.text(),plt.text()函数基本语法如下:的用法和参数设置

  plt.text(x,y,s,fontsize,垂直对齐,水平对齐,旋转,**kwargs)

  其中:

  x,y代表添加标签的位置。默认情况下是按照坐标轴的数据来测量的,这个数据是绝对值,也就是说图中点的位置的对应值。特别是,如果要更改坐标系,应该使用transform=ax.transAxes参数。s标签符号,字符串格式。比如你要加“我爱科技三条线”,更多的是你标注与数据相关的主题。如实写就好。Tsize,顾名思义,是标签的字体大小。取一个整数。垂直对齐意味着垂直对齐。您可以选择“居中”、“顶部”、“底部”和“基线”进行水平对齐。标签的旋转角度可以填写“中心”、“右”和“左”。逆时针计数,四舍五入后依次是family设置字体,style设置字体样式,weight字体粗细,bbox给字体加框,如BBOX=DICT (face color= red ,alpha=0.5)等。各种风格都有,总有一款适合你。实例操作:

  解释完关键函数类plt.text()的用法,我们需要做实际操作。首先,我们用下面的代码画第一张图。

  导入熊猫作为pd #导入数据分析模块

  将matplotlib.pyplot导入为plt #导入绘图模块类

  PLT . RC params[ font . sans-serif ]=[ sim hei ]#图中的中文字体设置为粗体。

  PLT . RC params[ axes . unicode _ MINUS ]=显示false #负值

  Data=pd.read_excel(rD:\城市出租地图\人流与疫情发展\百度迁徙. xlsx) #读取数据

  City_name=data[city] #城市名称

  people _ flow=data[ out _ people ]* 100 #外出人口,单位为百人。

  确认=数据[确认(2.10)] #确诊病例数

  figure=PLT . figure(figure size=(8,6)) #新画布

  Ax=plt.subplot(1,1,1) #子图初始化

  Ax.scatter (people _ flow,确认)#绘制散点图。

  Ax.set_title(人口流入-确诊病例数)

  Ax.set_xlabel(人口流入(百人))

  Ax.set_ylabel(确诊病例数)

  plt.show()

  然后再给第一个点加上标签,只需要添加一行

  代码即可:

  

  

ax.text(430, 337, "北京", fontsize=12, color = "r", style = "italic", weight = "light", verticalalignment=center, horizontalalignment=right, rotation=90)

  其中430, 337就是这个点的坐标值,北京是这个点的主体,你可以不断的去调后面的参数使其满足你所需。

  接着,我们要批量给图中的点加上主体标签,使其看起来像第二张图,需要用到循环语句来控制加标签的位置

  

for i in range(len(confirm)):

      ax.text(people_flow[i]*1.01, confirm[i]*1.01, city_name[i], fontsize=10, color = "r", style = "italic", weight = "light", verticalalignment=center, horizontalalignment=right,rotation=0) #给散点加标签

  这里关键是里面偏移参数的设定,比如这里两个偏移率都设置成1.01, 当初想的是标签不要覆盖原来的点,两者最好不重合,看起来大方得体,你可以开始的设置成1.0,观察效果然后慢慢调节,举个例子,如果是柱状图,且宽度适合的话,第一个偏移率设置成1.0,第二个设置成1.05左右,即稍微高出柱子多一丁点显示柱子的标签。

  完整代码:

  最后给出完整代码,如果你不会写代码或者只要数据测试,百度迁徙.xlsx如下:

  

  

import pandas as pd #导入数据分析模块

  import matplotlib.pyplot as plt #导入绘图模块类

  plt.rcParams[font.sans-serif]=[SimHei] #图中文字体设置为黑体

  plt.rcParams[axes.unicode_minus]=False #负值显示

  data=pd.read_excel(r"D:\城市租赁地图\人流流动与疫情发展\百度迁徙.xlsx") #读取数据

  city_name=data[city] #城市名称

  people_flow=data[out_people]*100 #流出人口,单位百人

  confirm=data[confirm(2.10)] #确诊人数

  fig=plt.figure(figsize=(8,6)) #新建画布

  ax=plt.subplot(1,1,1) #子图初始化

  ax.scatter(people_flow,confirm) #绘制散点图   

  ax.set_title("人口流入-确诊人数")

  ax.set_xlabel("人口流入数(百人)")

  ax.set_ylabel("确诊人数")

  #ax.text(430, 337, "北京", fontsize=12, color = "r", style = "italic", weight = "light", verticalalignment=center, horizontalalignment=right,rotation=90)

  for i in range(len(confirm)):

      ax.text(people_flow[i]*1.01, confirm[i]*1.01, city_name[i], 

              fontsize=10, color = "r", style = "italic", weight = "light",

              verticalalignment=center, horizontalalignment=right,rotation=0) #给散点加标签

  plt.show()

  

  到此这篇关于python画图时给图中的点加标签和plt.text的使用的文章就介绍到这了,更多相关python给图中点加标签内容请搜索盛行IT软件开发工作室以前的文章或继续浏览下面的相关文章希望大家以后多多支持盛行IT软件开发工作室!

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: