当前位置:网站首页>可视化之路(九)Arrow类详解
可视化之路(九)Arrow类详解
2022-04-23 06:17:00 【小猪猪家的大猪猪】
Arrow类
1.Arrow类介绍
Arrow3.4.1官方文档
以下是maplotlib库中的继承图:
由图可知,Arrow类继承自Patch类这个基础父类,是专门负责箭头这个图形的各个属性以及实现。但是这个类的自由度不是很高无法精确设置所有想指定的属性,同时切记这个类的实例不是我们同常认为的arrow方法的返回值。他返回的是FancyArrow实例。
1.1Arrow类定义
class Arrow(x,
y,
dx,
dy,
width=1.0,
**kwargs)
参数说明:
参数1:x:浮点型,指定箭头尾部的X坐标
参数2:y:浮点型,指定箭头尾部的Y坐标
参数3:dx:浮点型,指定箭头的X方向坐标
参数4:dy:浮点型,指定箭头的Y方向坐标
参数5:width:浮点型,指定箭头宽度的比例因子,默认头部宽度0.6,尾部宽度0.2
参数6:kwargs:接收Patch属性,Patch属性见参考链接。
参数详解:
- Arrow类指定的箭头从**(x, y)开始,这个坐标也作为箭头尾部的中心坐标,从这一点开始,指向(x + dx, y + dy)**为止。
- width属性指定是比例,切记是比例,而不是指定绝对数值,可以理解为最后的箭头头部宽度为0.6width,尾部宽度为0.2width。
- 该类实例可以通过add_artist或者add_patch方法添加到图框中。
1.2示例展示
1.2.1width参数展示
我们现在更改width参数的数值看看会发生什么。示例程序如下:
import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif'] = ['SimHei'] # 设置支持中文
plt.rcParams['axes.unicode_minus'] = False # 设置-号
#初始化图框和数据
figure, [(ax1, ax2), (ax3, ax4)] = plt.subplots(2, 2)
widths = [0.1, 1, 8, 15]
#画图
for ax, num, width in zip([ax1, ax2, ax3, ax4], range(4), widths):
arrow = (plt.Arrow(5, 5, 3, 3, width=width)) #Arrow创建实例
ax.add_patch(arrow) #添加实例
ax.set_title('width=' + str(width), fontsize=25)
ax.set_xlabel('X', fontsize=15)
ax.set_ylabel('Y', fontsize=15)
ax.autoscale(True)
figure.subplots_adjust(hspace=0.5)
plt.show()
画图结果如下:
从上图可以看出width参数指的就是放大倍率,而不是绝对数值,头部、尾部宽度比例是不变的。此外可以看到5, 5)这个坐标对应的正是尾部中点,而(8, 8)则是箭头头部尖端所在的坐标。
1.2.2获取、设置属性展示
同其他的matplotlib类实例一致,使用get_property(value)、set_property(value),这两种方法前者用来获取当前属性,后者用来设置当前属性。property代表要设置的属性名称,value代表要设置的值。示例程序如下:
print('old linewidth=', arrow.get_linewidth())
arrow.set_linewidth(15)
print('new linewidth=', arrow.get_linewidth())
程序运行结果如下:
old linewidth= 1.0
new linewidth= 15.0
1.2.3可视化展示
Arrow类的参数少且言简意赅,width参数已经介绍完毕,故不再过多赘述。具体的Patch类详解见参考链接,该例只展示一下传递Patch类属性关键字参数的可视化效果。示例程序如下:
import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif'] = ['SimHei'] # 设置支持中文
plt.rcParams['axes.unicode_minus'] = False # 设置-号
X = 5 #X坐标
Y = 5 #Y坐标
dx = 3 #X坐标增量
dy = 3 #Y坐标增量
width = 1.5 #宽度比例
fig, ax = plt.subplots(3, 3)
#画示例标准箭头
arrow0 = plt.Arrow(x=X, y=Y, dx=dx, dy=dy, width=width)
ax[0, 0].add_patch(arrow0)
ax[0, 0].set_title('normal', fontsize=25)
#更改表面颜色
arrow1 = plt.Arrow(x=X, y=Y, dx=dx, dy=dy, width=width, facecolor='#FF0000')
ax[0, 1].add_patch(arrow1)
ax[0, 1].set_title('facecolor=#FF0000', fontsize=25)
#更改边缘线条宽度
arrow2 = plt.Arrow(x=X, y=Y, dx=dx, dy=dy, width=width, edgecolor='#000000', linewidth=5)
ax[0, 2].add_patch(arrow2)
ax[0, 2].set_title('linewidth=5', fontsize=25)
#更改边缘线条颜色
arrow3 = plt.Arrow(x=X, y=Y, dx=dx, dy=dy, width=width, edgecolor='#0000FF')
ax[1, 0].add_patch(arrow3)
ax[1, 0].set_title('edgecolor=#0000FF', fontsize=25)
#更改线型
arrow4 = plt.Arrow(x=X, y=Y, dx=dx, dy=dy, width=width, edgecolor='#000000', linewidth=5, linestyle='--')
ax[1, 1].add_patch(arrow4)
ax[1, 1].set_title('linestyle=--', fontsize=25)
#更改填充模式
arrow5 = plt.Arrow(x=X, y=Y, dx=dx, dy=dy, width=width, fill=False)
ax[1, 2].add_patch(arrow5)
ax[1, 2].set_title('fill=False', fontsize=25)
#更改填充阴影
arrow6 = plt.Arrow(x=X, y=Y, dx=dx, dy=dy, width=width, hatch='||')
ax[2, 0].add_patch(arrow6)
ax[2, 0].set_title('hatch=||', fontsize=25)
#更改透明度
arrow7 = plt.Arrow(x=X, y=Y, dx=dx, dy=dy, width=width, facecolor='#00FF00', edgecolor='#000000', linewidth=5, alpha=0.1)
ax[2, 1].add_patch(arrow7)
ax[2, 1].set_title('alpha=0.1', fontsize=25)
#更改可见性
arrow8 = plt.Arrow(x=X, y=Y, dx=dx, dy=dy, width=width, visible=False)
ax[2, 2].add_patch(arrow8)
ax[2, 2].set_title('visible=False', fontsize=25)
for i in range(3):
for j in range(3):
ax[i, j].autoscale(True)
fig.subplots_adjust(hspace=0.4, wspace=0.4)
plt.show()
画图结果如下:
3.参考
版权声明
本文为[小猪猪家的大猪猪]所创,转载请带上原文链接,感谢
https://blog.csdn.net/pcx171/article/details/115864779
边栏推荐
猜你喜欢
EMMC/SD学习小记
Urban emergency management - urban emergency communication command and dispatching system
AUTOSAR从入门到精通100讲(八十一)-AUTOSAR基础篇之FiM
Detailed explanation of device tree
记录阿里云服务器挖矿程序处理
自组网灵活补盲|北峰油气田勘测解决方案
excel实战应用案例100讲(八)-Excel的报表连接功能
华为云MVP邮件
Emergency air space integrated communication system scheme of Guangxi Power Grid
如何利用qemu搭建SOC protoype:80行代码实现一个Cortex M4 模拟器
随机推荐
go iris框架实现多服务Demo:通过(监听8083端口的)服务1中的接口启动(监听8084端口的)服务2
网络层重要知识(面试、复试、期末)
golang实现MD5,SHA256,bcrypt加密
北峰通信助力湛江市消防支队构建PDT无线通信系统
Draw margin curve in arcface
“泉”力以赴·同“州”共济|北峰人一直在行动
带低压报警的51单片机太阳能充电宝设计与制作(完整代码资料)
连接orcale
应急医疗通讯解决方案|MESH无线自组网系统
golang实现一个带Web界面的五险一金计算器
imx6ull-qemu 裸机教程1:GPIO,IOMUX,I2C
吴恩达编程作业——Logistic Regression with a Neural Network mindset
公专融合对讲机是如何实现多模式通信下的协同工作?
pytorch:关于GradReverseLayer实现的一个坑
Beifeng communication helps Zhanjiang fire brigade build PDT wireless communication system
Swin transformer to onnx
PyTorch 9. optimizer
hql求一个范围内最大值
项目文件“ ”已被重命名或已不在解决方案中、未能找到与解决方案关联的源代码管理提供程序——两个工程问题
《Attention in Natural Language Processing》翻译