Фон для графика в PyQt

OmgZomg

Новичок
Пользователь
Апр 22, 2020
30
2
8
Как задать изображение в качестве фона графика? Использую PySide2

Python:
from PySide2 import QtGui
from PySide2.QtWidgets import *
from PySide2.QtCharts import QtCharts
from PySide2.QtCore import Qt,QPointF
import numpy as np

app = QApplication([])
upperSeries = QtCharts.QLineSeries()

x=np.array([ 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 ])
y1=np.array([0.05506608 ,0.03977273 ,0.03530752, 0.0311245 ,              0.02880288, 0.02834008,
0.02672606, 0.02738764, 0.02686763, 0.02697731 ,0.02777778,   0.02818556,
0.0265252 ])

for i in range(len(x)):
    upperSeries.append(x[i], y1[i])

series = QtCharts.QAreaSeries(upperSeries)

pen = QtGui.QPen(Qt.black)
pen.setWidth(2)
series.setPen(pen)

gradient = QtGui.QLinearGradient(QPointF(0, 0), QPointF(0, 1))
gradient.setColorAt(0.0, QtGui.QColor("transparent"))
series.setBrush(gradient)

chart = QtCharts.QChart()
chart.addSeries(series)
chart.setTitle('Simple Area Chart')
chart.legend().hide()
chart.createDefaultAxes()



chart.axes(Qt.Horizontal)[0].setTickCount(20)
chart.axes(Qt.Vertical)[0].setTickCount(20)


chartView = QtCharts.QChartView(chart)
chartView.setWindowTitle('Area Chart')
chartView.resize(800, 600)
chartView.show()

app.exec_()

Пример воспроизводимый
 

stud_55

Модератор
Команда форума
Модератор
Апр 3, 2020
1 522
672
113
Как задать изображение в качестве фона графика?
Можно сделать фон графика прозрачным и задать стиль (фон) для chartView:
Python:
chart = QtCharts.QChart()
chart.addSeries(series)
chart.setTitle('Simple Area Chart')
chart.setBackgroundBrush(QtGui.QBrush(QtGui.QColor("transparent")))
...
chartView = QtCharts.QChartView(chart)
chartView.setWindowTitle('Area Chart')
chartView.setStyleSheet("background-image : url(image.png);")
...
или задать фон самому графику:
Python:
...
chart = QtCharts.QChart()
chart.addSeries(series)
chart.setTitle('Simple Area Chart')
fon = QtGui.QImage("image.png").scaled(800, 600)
chart.setBackgroundBrush(QtGui.QBrush(fon))
chart.legend().hide()
chart.createDefaultAxes()
...
 

OmgZomg

Новичок
Пользователь
Апр 22, 2020
30
2
8
Можно сделать фон графика прозрачным и задать стиль (фон) для chartView:
Python:
chart = QtCharts.QChart()
chart.addSeries(series)
chart.setTitle('Simple Area Chart')
chart.setBackgroundBrush(QtGui.QBrush(QtGui.QColor("transparent")))
...
chartView = QtCharts.QChartView(chart)
chartView.setWindowTitle('Area Chart')
chartView.setStyleSheet("background-image : url(image.png);")
...
или задать фон самому графику:
Python:
...
chart = QtCharts.QChart()
chart.addSeries(series)
chart.setTitle('Simple Area Chart')
fon = QtGui.QImage("image.png").scaled(800, 600)
chart.setBackgroundBrush(QtGui.QBrush(fon))
chart.legend().hide()
chart.createDefaultAxes()
...
Благодарю! второй способ самое то.
 

Форум IT Специалистов