PyQt не отрисовывает график
Привожу код графика
x1=[397.32,
400.2,
403.09,
405.97,
408.85,
411.74,
414.63,
417.52,
420.4,
423.29,
426.19,
429.08,
431.97,
434.87]
y1=[0.07542361180220844,
0.06165789718408404,
0.05656957760844683,
0.0541456491209457,
0.05249979043283297,
0.05114544866346287,
0.0503212323966314,
0.049857238503458946,
0.04947481544904317,
0.0489829950303016,
0.048930385042992956,
0.04893327934757965,
0.04835261615067527,
0.047385335326809795]
for i in range(len(x1)):
upperSeries.append(x1[i], y1[i])
series=QAreaSeries(upperSeries)
chart = QChart()
pen = QPen(Qt.red)
pen.setWidth(3)
series.setPen(pen)
chart.addSeries(series)
chart.setTitle('Simple Area Chart')
chart.legend().hide()
chart.createDefaultAxes()
chart.axes(Qt.Horizontal)[0].setRange(min(x),max(x))
chart.axes(Qt.Vertical)[0].setRange(min(y), max(y))
chartView = QChartView(chart)
chartView.setWindowTitle('Area Chart')
chartView.resize(800, 600)
chartView.show()
app.exec_()
Не отрисовывает. В чем может быть проблема?
Ответы (2 шт):
Я не совсем понял какой график вы хотите отрисовать, поэтому предоставляю для вас два варианта в разных ответах.
Класс QAreaSeries представляет данные в виде диаграмм Area Charts.
Area Charts используется для отображения количественных данных.
Он основан на серии линий таким образом, что область между граничными линиями выделяется цветом.
Больше https://doc.qt.io/qt-5/qareaseries.html#details
import sys
from PyQt5.QtWidgets import QApplication
from PyQt5.QtChart import QChartView, QChart, QLineSeries, QAreaSeries
from PyQt5.QtCore import QPointF
from PyQt5.QtGui import QColor, QGradient, QLinearGradient, QPainter, QPen
class Window(QChartView):
def __init__(self, *args, **kwargs):
super(Window, self).__init__(*args, **kwargs)
self.resize(600, 400)
self.setRenderHint(QPainter.Antialiasing)
# диаграмма
chart = QChart()
self.setChart(chart)
# Добавить Series
chart.addSeries(self.getSeries())
# Создать ось по умолчанию
chart.createDefaultAxes()
# Установите диапазон оси XY
chart.axisX().setRange(397.3, 434.9)
chart.axisY().setRange(0.0474, 0.0754)
def getSeries(self):
# Создать Series, Класс QLineSeries представляет данные в виде линейных диаграмм.
# Для создания диаграмм Area Charts нам понадобятся два экземпляра QLineSeries
# Они собираются определить верхнюю и нижнюю границу области.
series0 = QLineSeries(self)
series1 = QLineSeries(self)
# Добавить данные
for i in range(len(x1)):
series0.append(QPointF(x1[i], y1[i]))
series1.append(QPointF(x1[i], y1[i]-0.0005))
# Создать карту местности
series = QAreaSeries(series0, series1)
series.setName('Area Charts')
# кисть
pen = QPen(0x059605)
pen.setWidth(3)
series.setPen(pen)
# Установить кисть
gradient = QLinearGradient(QPointF(0, 0), QPointF(0, 1))
gradient.setColorAt(0.0, QColor(0x3cc63c))
gradient.setColorAt(1.0, QColor(0x26f626))
gradient.setCoordinateMode(QGradient.ObjectBoundingMode)
series.setBrush(gradient)
return series
x1 = [
397.32,
400.2,
403.09,
405.97,
408.85,
411.74,
414.63,
417.52,
420.4,
423.29,
426.19,
429.08,
431.97,
434.87
]
y1 = [
0.07542361180220844,
0.06165789718408404,
0.05656957760844683,
0.0541456491209457,
0.05249979043283297,
0.05114544866346287,
0.0503212323966314,
0.049857238503458946,
0.04947481544904317,
0.0489829950303016,
0.048930385042992956,
0.04893327934757965,
0.04835261615067527,
0.047385335326809795
]
if __name__ == '__main__':
app = QApplication(sys.argv)
w = Window()
w.show()
sys.exit(app.exec_())
Класс QLineSeries представляет данные в виде линейных диаграмм.
Линейная диаграмма используется для отображения информации в виде серии точек данных,
соединенных прямыми линиями.
Больше https://doc.qt.io/qt-5/qlineseries.html#details
import sys
from PyQt5.QtChart import QChart, QChartView, QLineSeries
from PyQt5.QtCore import QPointF
from PyQt5.QtWidgets import QApplication, QMainWindow
x1 = [
397.32,
400.2,
403.09,
405.97,
408.85,
411.74,
414.63,
417.52,
420.4,
423.29,
426.19,
429.08,
431.97,
434.87
]
y1 = [
0.07542361180220844,
0.06165789718408404,
0.05656957760844683,
0.0541456491209457,
0.05249979043283297,
0.05114544866346287,
0.0503212323966314,
0.049857238503458946,
0.04947481544904317,
0.0489829950303016,
0.048930385042992956,
0.04893327934757965,
0.04835261615067527,
0.047385335326809795
]
app = QApplication(sys.argv)
series0 = QLineSeries()
series0.setName('LineSeries')
for i in range(len(x1)):
series0.append(QPointF(x1[i], y1[i]))
chart = QChart()
chart.addSeries(series0)
chart.createDefaultAxes()
chartView = QChartView(chart)
window = QMainWindow()
window.setCentralWidget(chartView)
window.resize(600, 400)
window.show()
sys.exit(app.exec_())

