modify x y value

This commit is contained in:
Irony 2017-12-28 00:30:59 +08:00
parent fd45e4c58c
commit eb5ce8fb80

View file

@ -9,7 +9,6 @@ Created on 2017年12月23日
@file: QChartToolTipTest @file: QChartToolTipTest
@description: @description:
''' '''
import random
import sys import sys
from PyQt5.QtChart import QChartView, QChart, QLineSeries from PyQt5.QtChart import QChartView, QChart, QLineSeries
@ -23,29 +22,6 @@ __Author__ = "By: Irony.\"[讽刺]\nQQ: 892768447\nEmail: 892768447@qq.com"
__Copyright__ = "Copyright (c) 2017 Irony.\"[讽刺]" __Copyright__ = "Copyright (c) 2017 Irony.\"[讽刺]"
__Version__ = "Version 1.0" __Version__ = "Version 1.0"
m_listCount = 3
m_valueMax = 10
m_valueCount = 7
def generateRandomData(listCount, valueMax, valueCount):
random.seed()
dataTable = []
for i in range(listCount):
dataList = []
yValue = 0.0
f_valueCount = float(valueCount)
for j in range(valueCount):
yValue += random.uniform(0, valueMax) / f_valueCount
value = j + random.random() * m_valueMax / f_valueCount, yValue
label = "Slice " + str(i) + ":" + str(j)
dataList.append((value, label))
dataTable.append(dataList)
return dataTable
m_dataTable = generateRandomData(m_listCount, m_valueMax, m_valueCount)
''' '''
class CircleWidget(QGraphicsProxyWidget): class CircleWidget(QGraphicsProxyWidget):
@ -173,7 +149,7 @@ class ChartView(QChartView):
# 坐标原点坐标 # 坐标原点坐标
point_bottom = self._chart.mapToPosition(QPointF(min_x, min_y)) point_bottom = self._chart.mapToPosition(QPointF(min_x, min_y))
step_x = (max_x - min_x) / (axisX.tickCount() - 1) step_x = (max_x - min_x) / (axisX.tickCount() - 1)
step_y = (max_y - min_y) / (axisY.tickCount() - 1) # step_y = (max_y - min_y) / (axisY.tickCount() - 1)
# 把鼠标位置所在点转换为对应的xy值 # 把鼠标位置所在点转换为对应的xy值
x = self._chart.mapToValue(event.pos()).x() x = self._chart.mapToValue(event.pos()).x()
y = self._chart.mapToValue(event.pos()).y() y = self._chart.mapToValue(event.pos()).y()
@ -244,15 +220,25 @@ class ChartView(QChartView):
def initChart(self): def initChart(self):
self._chart = QChart(title="Line Chart") self._chart = QChart(title="Line Chart")
self._chart.setAcceptHoverEvents(True) self._chart.setAcceptHoverEvents(True)
for i, data_list in enumerate(m_dataTable): dataTable = [
[120, 132, 101, 134, 90, 230, 210],
[220, 182, 191, 234, 290, 330, 310],
[150, 232, 201, 154, 190, 330, 410],
[320, 332, 301, 334, 390, 330, 320],
[820, 932, 901, 934, 1290, 1330, 1320]
]
for i, data_list in enumerate(dataTable):
series = QLineSeries(self._chart) series = QLineSeries(self._chart)
for value, _ in data_list: for j, v in enumerate(data_list):
series.append(*value) series.append(j, v)
series.setName("Series " + str(i)) series.setName("Series " + str(i))
series.setPointsVisible(True) # 显示原点 series.setPointsVisible(True) # 显示原点
series.hovered.connect(self.onSeriesHoverd) series.hovered.connect(self.onSeriesHoverd)
self._chart.addSeries(series) self._chart.addSeries(series)
self._chart.createDefaultAxes() # 创建默认的轴 self._chart.createDefaultAxes() # 创建默认的轴
self._chart.axisX().setTickCount(7) # x轴设置7个刻度
self._chart.axisY().setTickCount(7) # y轴设置7个刻度
self._chart.axisY().setRange(0, 1500) # 设置y轴范围
self.setChart(self._chart) self.setChart(self._chart)