PyQt5 QWebView无法正确渲染matplotlib svg

时间:2016-09-13 13:48:18

标签: python svg matplotlib pyqt qwebview

我尝试使用QWebView来显示包含多个matplotlib生成的svg文件的html页面。内容显示如我所料,但svg数字缺少某些部分。似乎没有任何纯粹的水平或垂直线条呈现(使用axvline / axhlinegriderrorbar等绘制的元素。奇怪的是,调整窗口大小有时会导致丢失的元素进入视图。

这里可能发生什么?

示例代码

from io import BytesIO
from PyQt5 import QtGui, QtWidgets, QtWebKitWidgets
from matplotlib.figure import Figure
from matplotlib.backends.backend_qt5agg import FigureCanvasQTAgg as FigureCanvas
import numpy as np

# Generate figure
fig = Figure()
canvas = FigureCanvas(fig)
ax = fig.add_subplot(111)
x = np.arange(-2*np.pi, 2*np.pi, step=0.1)
y = np.sin(x)
ax.grid(which='major')
ax.plot(x, y)
ax.axhline(0, color='black', linestyle='--')
ax.axvline(0, color='black', linestyle='--')

# Save svg
svg = BytesIO()
fig.savefig(svg, format='svg')

# Display in gui
app = QtWidgets.QApplication([])
win = QtWidgets.QWidget()
win.setWindowTitle('Test SVG rendering')
webview = QtWebKitWidgets.QWebView()
webview.setContent(svg.getvalue())
layout = QtWidgets.QHBoxLayout(win)
layout.addWidget(canvas)
layout.addWidget(webview)
win.show()
app.exec_()

输出

enter image description here

调整窗口大小后

enter image description here

0 个答案:

没有答案