2015-03-07 8 views
5

Wiem, że sprytnie renderuje się w HTML i może być osadzony w środowisku sieciowym. Zastanawiam się, czy można to zrobić w oknie HTML w aplikacji PyQt? W szczególności chciałbym wiedzieć, czy to działa w trybie offline, bez połączenia z Internetem.Czy mogę umieścić wykresy spiskowe (offline) w mojej aplikacji PyQt4?

EDIT:

Jest to fragment, jak ja w końcu osadzone wykresy przy użyciu matplotlib:

from PyQt4 import QtGui 

from matplotlib.backends.backend_qt4agg \ 
    import FigureCanvasQTAgg as FigureCanvas 
from matplotlib.backends.backend_qt4agg \ 
    import NavigationToolbar2QT as NavigationToolbar 
import matplotlib.pyplot as plt 


class Contour(QtGui.QFrame): 

    def __init__(self, parent=None): 
     super(Contour, self).__init__(parent) 

     self.parent = parent 

     # a figure instance to plot on 
     self.figure = plt.figure(figsize=(20, 30)) 
     r, g, b = 100./255., 100./255., 100./255. 
     self.figure.patch.set_facecolor(color=(r, g, b)) 

     # this is the Canvas Widget that displays the `figure` 
     # it takes the `figure` instance as a parameter to __init__ 
     self.canvas = FigureCanvas(self.figure) 

     # this is the Navigation widget 
     # it takes the Canvas widget and a parent 
     self.toolbar = NavigationToolbar(self.canvas, self) 

     # set the layout 
     layout = QtGui.QVBoxLayout() 
     layout.addWidget(self.toolbar) 
     layout.addWidget(self.canvas) 
     self.setLayout(layout) 

a potem w innej funkcji:

# create an axis 
    ax1 = self.figure.add_subplot(211, frame_on=False) 
    ax2 = self.figure.add_subplot(212, frame_on=False) 

    # plot data 
    r, g, b = 39./255., 40./255., 34./255. 
    ax1.plot(x, y, ls='o', color=(r, g, b), linewidth=3) 
    ax1.plot(coo[0], coo[1], 'go', zorder=20) # leading edge 
    ax1.plot(xg, yg, 'mo', zorder=30) # leading edge 
    ax1.plot(xr, yr, 'yo', zorder=30) # curvature circle center 
    ax1.add_patch(circle) 
    ax1.set_title('Contour', fontsize=14) 
    ax1.set_xlim(-10.0, 110.0) 
    # ax1.set_ylim(-10.0, 14.0) 
    r, g, b = 249./255., 38./255., 114./255. 
    ax1.fill(x, y, color=(r, g, b)) 
    ax1.set_aspect('equal') 

    ax2.plot(coo[0], gradient, 'go-', linewidth=3) 
    ax2.set_title('Gradient', fontsize=14) 
    ax2.set_xlim(-10.0, 110.0) 
+2

Dlaczego po prostu tego nie spróbujesz? – ekhumoro

+0

A następnie powiedzcie nam o wszystkim. : D –

Odpowiedz

0

Plotly jest głównie opracowany, aby wykresów w przeglądarka jest łatwa. Nie sądzę, że może być osadzony w strukturze interfejsu użytkownika, takiej jak PyQT lub Tkinter. Plotly ma wersję Enterprise, która działa w naszej sieci firmowej bez połączenia z Internetem.

PyQtgraph lub MatPlotLib mogą być opcją dla Ciebie, jeśli naprawdę potrzebujesz osadzić wykresy w PyQT.

Oto przykładowy kod do eksportowania wykresów jako png, a następnie osadzenia obrazu png w aplikacji PyQT.

import matplotlib.pyplot as plt 
plt.plot([1,2,3,4,5], [10,20,30]) 
plt.savefig('graphs.png') 

import os,sys 
from PyQt4 import QtGui 
pic.setPixmap(QtGui.QPixmap("graphs.png")) 
+1

Może chcieć [edytować], aby dołączyć kilka sugestii dotyczących rozpoczęcia pracy z PyQtgraph lub MatPlotLib. –

0

Nie wiem, czy to całkowicie spełnia Twoje potrzeby umieścić dany masz

import plotly.plotly as py 

można zapisać obraz, a następnie

py.image.save_as({'data': data}, 'your_image_filename.png') 
pic.setPixmap(QtGui.QPixmap("your_image_filename.png")) 

Warning, I haven próbowałem tego

1

kiedyś próbował za pomocą:

import plotly.offline as plt 
. 
. 
. 
plt.plot(fig, filename=testName + '__plot.html') 

a następnie próbował wygenerować wykres .. ten dał mi plik HTML, który następnie Próbowałem też wprowadzenie na QWebView jako jego właściwość url [tylko aby sprawdzić, czy renders].

Proszę obejrzeć obraz w celach informacyjnych. Render :: Plotly Offline :: QtWebView

+0

Dzięki za tę odpowiedź. +1, ponieważ nadal dbałeś o to po długim czasie. W międzyczasie używam również Bokeh. – chiefenne

+1

Ja również patrzę na Bokeh. Próbuję zdecydować, którego shouda używam do narzędzia analizy danych mojej firmy. Dzięki za wzloty. – mrkrynmdsco

Powiązane problemy