如何在PyQtGraph中点击并高亮曲线(基于PyQt5)
PyQt5+PyQtGraph曲线点击高亮实现
我基于PyQt5开发了一款数据可视化工具,用户可通过表格选择数据,并用PyQtGraph绘制图表,初始绘图代码如下:
graph_sheet = pg.GraphicsLayoutWidget() layout_graph = graph_sheet.addLayout() plot = pg.PlotItem() layout_graph.addItem(plot) line_item = plot.plot(graph_data[x_col], graph_data[y_col], pen=color, name=curve_name)
需求是实现点击多曲线图表中的任意曲线后高亮该曲线,方便后续通过滑块对选中曲线进行横竖移动,但最初绑定sigClicked信号后完全没有响应。
最终自行解决问题,步骤如下:
- 创建
PlotDataItem后,添加line_item.setCurveClickable(True)开启曲线的可点击特性 - 为曲线绑定点击信号:
curve.sigClicked.connect(lambda x: self.handle_curve_click(x)) - 编写点击处理函数,通过修改画笔(
mkPen)实现高亮:将选中曲线的线宽改为2,其余曲线恢复默认线宽1,代码如下:
def handle_curve_click(self, curve): print(f"Curve clicked: {curve}") # 测试用输出 self.selected_curve = curve # 修改选中曲线的画笔属性 for graphtype, data in self.selectedGraphs.items(): for line_item, inst in data[1:]: if line_item == curve: pen = line_item.opts['pen'] pen = pg.mkPen(pen) selected_pen = pg.mkPen(color=pen.color(), width=2) line_item.setPen(selected_pen) else: line_item.setPen(self.default_pen(line_item)) @staticmethod def default_pen(line_item): pen = line_item.opts['pen'] pen = pg.mkPen(pen) default_pen = pg.mkPen(color=pen.color(), width=1) return default_pen
内容的提问来源于stack exchange,提问作者Souleater
相关产品推荐
相关产品推荐

