PyQt5 QtChart-QSplineSeries曲线图
- QSplineSeries
QSplineSeries
QSplineSeries类将数据序列显示为曲线图。核心代码:
spline = QSplineSeries()
spline.append(0, 23)
spline.append(1, 56)
…
chart.addSeries(lineSeries)
常用方法:
- setPointsVisible(True) :设置数据点显示状态
- setPointLabelsVisible(True):设置数据点标签显示状态
- setPointLabelsFormat(“(@xPoint, @yPoint)”):设置数据点标签格式
- setPointLabelsFont(QFont(None, 8)) :设置数据点标签字体
- setPointLabelsColor(QColor(255, 0,0)) :设置数据点标签颜色
import random
import sys
from PyQt5.QtGui import *
from PyQt5.QtCore import *
from PyQt5.QtWidgets import *
from PyQt5.QtCore import Qt
from PyQt5.QtChart import QSplineSeries, QLineSeries, QChart, QChartView, QValueAxis
class MySplineWindow(QWidget):
def __init__(self, parent=None):
super(MySplineWindow, self).__init__(parent)
self.setWindowTitle("曲线图表演示")
chart = QChart()
chart.setTitle("曲线图表")
chart.setAnimationDuration(1500)
chart.setAnimationOptions(QChart.SeriesAnimations)
chart.setAnimationEasingCurve(QEasingCurve.OutCirc)
chart.legend().show()
spline = QSplineSeries()
for value in range(1, 50):
spline.append(value, round(random.random()*100))
spline.setName("随机噪声")
# spline.setColor(Qt.blue)
spline.setPointsVisible(True)
spline.setPointLabelsVisible(True)
spline.setPointLabelsFormat("(@xPoint, @yPoint)")
spline.setPointLabelsFont(QFont(None, 6))
spline.setPointLabelsColor(Qt.darkBlue)
chart.addSeries(spline)
chart.createDefaultAxes()
axis_x = QValueAxis()
axis_x.setLabelFormat("%d")
chart.addAxis(axis_x, Qt.AlignBottom)
spline.attachAxis(axis_x)
chartView = QChartView()
chartView.setChart(chart)
chartView.setRenderHint(QPainter.Antialiasing)
vbox = QVBoxLayout()
vbox.addWidget(chartView)
self.setLayout(vbox)
if __name__ == "__main__":
app = QApplication(sys.argv)
win = MySplineWindow()
win.show()
sys.exit(app.exec_())
增加抗锯齿:chartView.setRenderHint(QPainter.Antialiasing)