一、写在前面
1.关于symbol的官方文档说明:symbol
2.我自己绘制的自定义symbol符号,如下图:一个在坐标轴上移动的“小货车”
2.默认可以选择的有以下多种symbol符号
但最后一项也说明了:支持QPainterPath绘制的自定义符号形状。更为详细的,在此处进行了更为详细的说明。
即,使用QPainterPath
绘制自定义的图形需要满足两个条件:①绘制起点需要是坐标原点(0,0);②绘制完成的整体图形需要满足长度
和宽度
都是1
。
二、主要代码参考
from PyQt5.QtGui import QColor
from PyQt5 import QtCore, QtGui, QtWidgets
from PyQt5.QtCore import Qt
from PyQt5.QtGui import *
from PyQt5.QtCore import *
from PyQt5.QtWidgets import *
import pyqtgraph as pg
def init_position(self):
'''初始化小车位置显示坐标轴'''
# 设置坐标系的背景颜色
self.widget.setBackground('w')
self.p = self.widget.addPlot()
# 禁止拖动坐标系
self.p.setMouseEnabled(x=False, y=False)
self.p.setMenuEnabled(False)
#隐藏左下角的“A”
self.p.hideButtons()
# 初始化坐标轴范围
self.p.setXRange(0, 2)
self.p.setYRange(0, 5)
# 隐藏纵坐标轴
self.p.showAxis('left', show=False)
#获取横坐标轴
self.axis = self.p.getAxis('bottom')
# 设置坐标系的背景颜色
self.widget.setBackground((6, 89, 127))
#设置坐标轴颜色
self.axis.setPen(color=(0,255,127))
#绘制颜色设置
pen_color = pg.mkPen(color=(0,255,127))
Brush_color = pg.mkBrush(color=(0,255,127))
#调用自定义symbol符号
car_symbol = self.create_car_symbol_back()
#绘制信息
self.p.plot([2.0], [5],
pen=pg.mkPen(color=(255,255,0),width=2),
symbolBrush=Brush_color,
symbolPen=pen_color, symbol=car_symbol,symbolSize=40)
# 创建一个QPainterPath对象来定义自定义的形状
def create_car_symbol_back(self):
'''绘制小货车'''
path = QtGui.QPainterPath()
path.moveTo(0, 0)
path.addRect(0, 0, 0.2, 0.1)
path.addRect(0,0.1,0.5,0.15)
path.addEllipse(0.3,0.29,0.15,0.15)
path.addEllipse(0.05, 0.29, 0.15, 0.15)
return path