From b3ab5543dd107a54a262dff6757b6e058c6c71e3 Mon Sep 17 00:00:00 2001 From: Alexander Bruy Date: Wed, 15 Feb 2017 19:46:18 +0200 Subject: [PATCH] [processing] update polar plot --- .../plugins/processing/algs/qgis/PolarPlot.py | 26 ++++++------------- .../algs/qgis/QGISAlgorithmProvider.py | 21 ++++----------- 2 files changed, 13 insertions(+), 34 deletions(-) diff --git a/python/plugins/processing/algs/qgis/PolarPlot.py b/python/plugins/processing/algs/qgis/PolarPlot.py index 99eeaed5a5a..59f6ab76622 100644 --- a/python/plugins/processing/algs/qgis/PolarPlot.py +++ b/python/plugins/processing/algs/qgis/PolarPlot.py @@ -25,17 +25,15 @@ __copyright__ = '(C) 2013, Victor Olaya' __revision__ = '$Format:%H$' -import matplotlib.pyplot as plt -import matplotlib.pylab as lab -from matplotlib.pyplot import figure +import plotly as plt +import plotly.graph_objs as go import numpy as np from processing.core.GeoAlgorithm import GeoAlgorithm from processing.core.parameters import ParameterTable from processing.core.parameters import ParameterTableField from processing.core.outputs import OutputHTML -from processing.tools import vector -from processing.tools import dataobjects +from processing.tools import dataobjects, vector class PolarPlot(GeoAlgorithm): @@ -66,16 +64,8 @@ class PolarPlot(GeoAlgorithm): output = self.getOutputValue(self.OUTPUT) - values = vector.values(layer, namefieldname, valuefieldname) - plt.close() - fig = figure(figsize=(8, 8)) - ax = fig.add_axes([0.1, 0.1, 0.8, 0.8], polar=True) - N = len(values[valuefieldname]) - theta = np.arange(0.0, 2 * np.pi, 2 * np.pi / N) - radii = values[valuefieldname] - width = 2 * np.pi / N - ax.bar(theta, radii, width=width, bottom=0.0) - plotFilename = output + '.png' - lab.savefig(plotFilename) - with open(output, 'w') as f: - f.write('') + values = vector.values(layer, valuefieldname) + + data = [go.Area(r=values[valuefieldname], + t=np.degrees(np.arange(0.0, 2 * np.pi, 2 * np.pi / len(values[valuefieldname]))))] + plt.offline.plot(data, filename=output) diff --git a/python/plugins/processing/algs/qgis/QGISAlgorithmProvider.py b/python/plugins/processing/algs/qgis/QGISAlgorithmProvider.py index 2f4b6b94095..89e4eaa50d8 100644 --- a/python/plugins/processing/algs/qgis/QGISAlgorithmProvider.py +++ b/python/plugins/processing/algs/qgis/QGISAlgorithmProvider.py @@ -262,31 +262,20 @@ class QGISAlgorithmProvider(AlgorithmProvider): FixGeometry(), ExecuteSQL(), FindProjection() ] - #~ if hasMatplotlib: - #~ from .VectorLayerHistogram import VectorLayerHistogram - #~ from .RasterLayerHistogram import RasterLayerHistogram - #~ from .VectorLayerScatterplot import VectorLayerScatterplot - #~ from .MeanAndStdDevPlot import MeanAndStdDevPlot - #~ from .BarPlot import BarPlot - #~ from .PolarPlot import PolarPlot - - #~ self.alglist.extend([ - #~ VectorLayerHistogram(), RasterLayerHistogram(), - #~ VectorLayerScatterplot(), MeanAndStdDevPlot(), BarPlot(), - #~ PolarPlot(), - #~ ]) if hasPlotly: from .VectorLayerHistogram import VectorLayerHistogram from .RasterLayerHistogram import RasterLayerHistogram from .VectorLayerScatterplot import VectorLayerScatterplot from .MeanAndStdDevPlot import MeanAndStdDevPlot from .BarPlot import BarPlot - #~ from .PolarPlot import PolarPlot + from .PolarPlot import PolarPlot self.alglist.extend([VectorLayerHistogram(), RasterLayerHistogram(), - VectorLayerScatterplot(), MeanAndStdDevPlot(), BarPlot()]) + VectorLayerScatterplot(), MeanAndStdDevPlot(), + BarPlot(), PolarPlot()]) - self.externalAlgs = [] # to store algs added by 3rd party plugins as scripts + # to store algs added by 3rd party plugins as scripts + self.externalAlgs = [] folder = os.path.join(os.path.dirname(__file__), 'scripts') scripts = ScriptUtils.loadFromFolder(folder)