我的编程空间,编程开发者的网络收藏夹
学习永远不晚

python画图时给图中的点加标签和plt.text的使用

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

python画图时给图中的点加标签和plt.text的使用

背景:

今天在用matplotlib模块画各城市2019-nCoV疫情确诊人数和节前流入人口数的图的时候遇到了要给图中的点加上标签示意,原本图长这个样子

现在要给各散点标注是哪个哪个城市,即下面这种图:

matplotlib模块加标签主要有matplotlib.pyplot.text()matplotlib.pyplot.annotate()两个关键函数,后者适用范围更广,今天主要谈一下前者matplotlib.pyplot.text(),简写成plt.text() 。

准备知识:

在此重点讲一下plt.text()的用法和参数设置,plt.text()函数基本语法如下:

plt.text(x, y, s, fontsize, verticalalignment,horizontalalignment,rotation , **kwargs)

其中

  • x,y表示标签添加的位置,默认是根据坐标轴的数据来度量的,是绝对值,也就是说图中点所在位置的对应的值,特别的,如果你要变换坐标系的话,要用到transform=ax.transAxes参数。
  • s表示标签的符号,字符串格式,比如你想加个“我爱三行科创”,更多的是你标注跟数据有关的主体,你如实写便是。
  • fontsize顾名思义就是你加标签字体大小了,取整数。
  • verticalalignment表示垂直对齐方式 ,可选 ‘center’ ,‘top’ , ‘bottom’,‘baseline’ 等
  • horizontalalignment表示水平对齐方式 ,可以填 ‘center’ , ‘right’ ,‘left’ 等
  • rotation表示标签的旋转角度,以逆时针计算,取整
  • 后面还有 family 用来设置字体,style 设置字体的风格,weight 字体的粗细, bbox 给字体添加框,如 bbox=dict(facecolor=‘red’, alpha=0.5) 等,各种风格,应有尽有,总有一款适合你。

实例操作:

讲解玩关键函数类plt.text()的用法之后,我们要进行实际操作。首先,我们用下面代码把第一张图画出来

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("确诊人数")
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给图中点加标签内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

python画图时给图中的点加标签和plt.text的使用

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

Python中怎么使用matplotlib给柱状图添加数据标签bar_label()

本篇内容主要讲解“Python中怎么使用matplotlib给柱状图添加数据标签bar_label()”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Python中怎么使用matplotlib给柱
2023-06-29

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录