python - 从 Pyqt5 图表中获取值
问题描述
将鼠标悬停在某个位置上时,尝试从 pyqt5 图表中提取值。
该系列是一个烛台系列,其值为 Adj_Open、Adj_High、Adj_Low、Adj_Close。
def call_sym_data(self):
self.chartlayout.removeWidget(self.chartviewer)
sym = self.sym_input.text()
sym_raw = quandl.get("EOD/"+sym, start_date = sdate, end_date = edate)
self.symlabel.setText(self.sym_input.text())
can_data = pd.DataFrame( columns = ['Adj_Open','Adj_High','Adj_Low','Adj_Close'])
can_data['Adj_Open'] = sym_raw['Adj_Open']
can_data['Adj_High'] = sym_raw['Adj_High']
can_data['Adj_Low'] = sym_raw['Adj_Low']
can_data['Adj_Close'] = sym_raw['Adj_Close']
print(can_data)
sym_date = sym_raw.index
series = QCandlestickSeries()
series.setDecreasingColor(Qt.red)
series.setIncreasingColor(Qt.green)
for index, row in can_data.iterrows():
series.append(QCandlestickSet(row['Adj_Open'], row['Adj_High'], row['Adj_Low'], row['Adj_Close']))
self.sym_chart = QChart()
self.sym_chart.addSeries(series)
self.sym_chart.setAnimationOptions(QChart.SeriesAnimations)
self.sym_chart.createDefaultAxes()
self.sym_chart.legend().hide()
self.sym_chart.axisX(series).setCategories(sym_date.strftime("%Y-%m-%d"))
self.chartviewer = QChartView(self.sym_chart)
self.chartlayout.addWidget(self.chartviewer)
目标是将鼠标悬停在特定栏上,并让它在图片中的输出上更改 Open、High、Low 和 Close 的标签。标签是 bar_open、bar_high、bar_low 和 bar_close。
符号图
我不知道如何悬停工作并显示每个值,并且 mapToPosition 似乎没有帮助。
解决方案
有一个可用的 QCandlestickSeries 信号 - 悬停。由于悬停在相应的烛台集上,这将在发射时返回底层的 QCandlestickSet。
可以添加一个插槽并将其连接到该信号。在槽中,可以提取来自 QCandlestickSet 的数据并用于更新标签。
虽然有一个问题 - 为插槽添加 pyqtSlot 装饰器。以下信号出错
QObject::connect: Incompatible sender/receiver arguments QtCharts::QCandlestickSeries::doubleClicked(QCandlestickSet*)
推荐阅读
- dart - 有效地测试/匹配嵌套对象
- node.js - 如何使用nodejs和mongoose更新/设置变量carryForward,它是对象内部的对象再次嵌套数组?
- angular - 本地化 Angular 11 库
- c++ - 将 Azure Kinect 库链接到 ROS2 工作区
- javascript - 如何将 React 应用程序与纯 JavaScript 应用程序集成?
- python - 如何在 VSCode 中使用远程 Jupyter 服务器?
- regex - 正则表达式不匹配
- c - 在 C 中使用函数指针 `typedef` 的函数定义/声明
- javascript - react-native-highcharts 中的 setOptions
- typescript - Typescript 区分元组的联合不能按预期工作