打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
[神奇的Python可视化]在Matplotlib上面绘制图片标记
userphoto

2023.04.21 北京

关注
人狠话不多,先看效果:
随机散点图+表情包
正弦曲线 + 表情包
看起来,是不是很有Python + 美图秀秀联合制作的风格(PS我不会用,我就会美图秀秀,这里美图公司是不是要来联系我谈一下带盐和广告费的问题?)
所谓的天下苦matplotlib散点图符号久矣……
众所周知的是matplotlib的散点图符号是固定的,如下所示:
markertype
“.”
point
“,”
pixel
像素
“o”
circle
“v”
triangle_down
下三角
“^”
triangle_up
上三角
“<”
triangle_left
左三角
“>”
triangle_right
右三角
“1”
tri_down
类似奔驰的标志
“2”
tri_up
类似奔驰的标志
“3”
tri_left
类似奔驰的标志
“4”
tri_right
类似奔驰的标志
“8”
octagon
八角形
“s”
square
正方形
“p”
pentagon
五角星
“*”
star
星号
“h”
hexagon1
六边形1
“H”
hexagon2
六边形2
“+”
plus
加号
“x”
x
x
“D”
diamond
钻石
“d”
thin_diamond
细的钻石
“ | “
vline
竖线
“-“
hline
水平方向的线
通过代码来绘制一下,效果就是这样:
当然,matplotlib还支持LaTeX 符号,也就是用来写数学公式的符号,比如:
但是总感觉还是不够的样子,比如我们要在图上显示机场,更希望的是用下面这样的图标:
那么matplotlib可不可以呢?
答案当然是么问题!看下面所示:
如果用matplotlib默认的图标绘制的效果应该是这样的:
那么我们用上面那个机场图标,绘制出来的效果就是这样的:(图标按比例缩小到0.4)
下面简单看看代码是怎么实现的:

首先看看需要哪些包

# pandas包用来读取csv文件
import pandas as pd
import matplotlib.pyplot as plt

# offsetbox这个类,是我们绘制图标用的重点类
import matplotlib.offsetbox as os

# read_png方法主要用来读取png图片
from matplotlib._png import read_png

下面先读取数据:

#cn.jpg是我们的背景图,我懒得用shape了,就直接在geoq上面截了一张图。
cn = plt.imread("cn.jpg")

# airportCN是中国机场的数据,有名称和经纬度,用Pandas直接读取了。
xypd = pd.read_csv("airportCN.csv", encoding = 'gb18030')

绘制默认图标的机场分布图:

plt.figure(figsize=(14, 14))

# imshow这个方法用来绘制背景图,extent里面是背景图的范围,参数是
# [xmin,xmax,ymin,ymax]
plt.imshow(cn, zorder=0, extent=[73.572,133.25,3.8,56.6])

# 绘制默认散点图,用红色的十字来标记
plt.scatter(xypd.x,xypd.y,marker="+",c="r",alpha = 1)
plt.show()
绘制的结果如下:
用我们指定的图片来绘制的代码如下:
# 前面还是一样,绘制背景图
fig,ax = plt.subplots(figsize=(14,14))
plt.imshow(cn, zorder=0, extent=[73.572,133.25,3.8,56.6])
for x1,y1 in zip(xypd.x,xypd.y):
#首先定义一个图片对象,缩放为0.4
image = os.OffsetImage(read_png("AirStrip.png"),zoom=0.4)
# 定义一个叫做AnnotationBbox的标记框
# 这个标记框里面放置我们定义好的图标
img = os.AnnotationBbox(image,(x1,y1),frameon=False)
#add_artist方法,把定义好的标记框加到画布上去
ax.add_artist(img)
绘制结果如下:
当然,你也可以根据不同的属性,选择不同的图标,我这里就不贴代码了,以上的代码和数据,在虾神是gitee代码库中,不知道的同学,在公众号发送消息:“图标”即可获取具体地址。
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
利用python的Matplotlib库进行基本绘图
UC头条:Python数据可视化入门:Matplotlib初级使用指南
使用matplotlib绘制图像并设置标题以及坐标轴等信息
python数据可视化 | matplotlib.pyplot()函数绘制散点图
Python Matplotlib散点图
python 读取并显示图片的两种方法
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服