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给图中点加标签内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • python 实现添加标签&打标签的操作

    普通打标签 odue_df=df_train_stmt.loc[(df_train_stmt.AGE3>0)|(df_train_stmt.AGE4>0)|(df_train_stmt.AGE5>0)|(df_train_stmt.AGE6>0),['XACCOUNT']].drop_duplicates() odue_df['label']=1 cust_df=df_acct[['CUSTR_NBR','XACCOUNT']].drop_duplicates() #做合并 df_

  • python matplotlib如何给图中的点加标签

    这篇文章主要介绍了python matplotlib给图中的点加标签,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 在写论文用到matplotlib画散点图,想着如果能把每个点对应的ID打在点的旁边就好了,经过一番搜索,最后找到了方法. 首先是打点,先把所有的点画好,举例如下: p1 = ax.scatter(X[:,0], X[:,1], marker = '*', color = 'r', label='1', s=10) 再依次给每个点打

  • python调用Matplotlib绘制分布点并且添加标签

    本文实例为大家分享了Python调用Matplotlib绘制分布点添加标签的具体代码,供大家参考,具体内容如下 添加标签的目的 代码 截图 目的 上文介绍了根据图像的大小作为坐标来绘制分布点图.老大又给了我一个任务,我绘制完,每次将图保存,发给她,但是图片中的点的坐标是不能显示了,所以她让我给每个点添加个label,而且label是该点的横纵坐标. 代码 import matplotlib.pyplot as plt from numpy.random import rand import nu

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

    背景: 今天在用matplotlib模块画各城市2019-nCoV疫情确诊人数和节前流入人口数的图的时候遇到了要给图中的点加上标签示意,原本图长这个样子 现在要给各散点标注是哪个哪个城市,即下面这种图: matplotlib模块加标签主要有matplotlib.pyplot.text()和matplotlib.pyplot.annotate()两个关键函数,后者适用范围更广,今天主要谈一下前者matplotlib.pyplot.text(),简写成plt.text() . 准备知识: 在此重点讲

  • Python画图时如何调用本地字体

    matplotlib中的字体文件被封装在font_manager这个子模块中,fontManager.ttflist这个列表涵盖了所有Matplotlib支持的字体. >>> import matplotlib.pyplot as plt >>> from matplotlib.font_manager import fontManager >>> print(fontManager.ttflist[0]) #此为字体文件 <Font 'cmmi

  • python画图时linestyle,color和loc参数的设置方式

    目录 python画图时linestyle,color和loc参数的设置 颜色字符(color) 风格字符(linestyle) loc 参数(以matplotlib添加图例为例说明位置) python画图基础 1.matplotlib 1.1绘制基本图像 1.2实现一些其他功能 1.3 在一个坐标系中画出多个图像 1.4多坐标作图 1.5 绘图应用 python画图时linestyle,color和loc参数的设置 本人没有看过专门介绍matplotlib的书籍,所以一直以来对一些画图的风格不

  • python画图——实现在图上标注上具体数值的方法

    比如当前的表格数据是 df['resultRate'].plot(style='-.bo') plt.grid(axis='y') #设置数字标签** for a,b in zip(df['num'],df['resultRate']): plt.text(a, b+0.001, '%.4f' % b, ha='center', va= 'bottom',fontsize=9) plt.show() 结果如图 以上这篇python画图--实现在图上标注上具体数值的方法就是小编分享给大家的全部内容

  • Python利用matplotlib做图中图及次坐标轴的实例

    图中图 准备数据 import matplotlib.pyplot as plt fig = plt.figure() x = [1, 2, 3, 4, 5, 6, 7] y = [1, 3, 4, 2, 5, 8, 6] - 大图 首先确定大图左下角的位置以及宽高: 注意,4个值都是占整个figure坐标系的百分比.在这里,假设figure的大小是10x10,那么大图就被包含在由(1, 1)开始,宽8,高8的坐标系内. # below are all percentage left, bott

  • python通过文本在一个图中画多条线的实例

    废话不多说,直接上代码吧! import matplotlib.pyplot as plt import numpy as np data1 = np.loadtxt('/data_1/SSD/caffe/tools/extra/DSOD300_VOC0712_DSOD300_300x300.log.test') data2 = np.loadtxt('/data_1/SSD/caffe/tools/extra/DSOD300_VOC0712_DSOD300_300x300.log.train'

  • python画图时设置分辨率和画布大小的实现(plt.figure())

    本文介绍了python画图时设置分辨率和画布大小的实现,主要使用plt.figure(),下面就一起来了解一下 plt.figure() 示例: import numpy as np import pandas as pd import warnings warnings.filterwarnings('ignore') import matplotlib.pyplot as plt import seaborn as sns #读取示例数据 df = pd.read_csv( 'https:/

  • python matplotlib画盒图、子图解决坐标轴标签重叠的问题

    在使用matplotlib画图的时候将常会出现坐标轴的标签太长而出现重叠的现象,本文主要通过自身测过好用的解决办法进行展示,希望也能帮到大家,原图出现重叠现象例如图1: 代码为: data1=[[0.3765,0.3765,0.3765,0.3765,0.3765],[0.3765,0.3765,0.3765,0.3765,0.3765],[0.3765,0.3765,0.3765,0.3765,0.3765],[0.3765,0.3765,0.3765,0.3765,0.3765]] data

  • 在Echarts图中给坐标轴加一个标识线markLine

    Echart3数据可视化视图 给坐标轴加一个标识线markLine 当X轴不是数值时,而是一个类型数据,如年份,公司名,企业名,这时Echarts图就不是从X轴起始位置开始的,所以我们就要给X轴加一个虚拟的值'0',在markLine中也是在赋值起始位置X轴值时,放置虚拟数据,并且设置一个boundaryGap: 0,可以让坐标轴与刻度之间空白变为0,这时标示线就从X轴起始位置开始了,详细属性可以去Echarts官网查看. 这里还要说一句在设置markLine下面data值时{x:",//代表的

随机推荐