Skip to content

Commit 47a40ed

Browse files
committed
Port BarPlot alg to new API
1 parent c1d35a0 commit 47a40ed

File tree

2 files changed

+35
-28
lines changed

2 files changed

+35
-28
lines changed

python/plugins/processing/algs/qgis/BarPlot.py

+27-21
Original file line numberDiff line numberDiff line change
@@ -30,11 +30,12 @@
3030

3131

3232
from qgis.core import (QgsApplication,
33-
QgsProcessingUtils)
34-
from processing.core.parameters import ParameterTable
35-
from processing.core.parameters import ParameterTableField
33+
QgsProcessingUtils,
34+
QgsProcessingParameterFeatureSource,
35+
QgsProcessingParameterTableField,
36+
QgsProcessingParameterFileOutput,
37+
QgsProcessingOutputHtml)
3638
from processing.algs.qgis.QgisAlgorithm import QgisAlgorithm
37-
from processing.core.outputs import OutputHTML
3839
from processing.tools import vector
3940

4041

@@ -56,17 +57,19 @@ def group(self):
5657

5758
def __init__(self):
5859
super().__init__()
59-
self.addParameter(ParameterTable(self.INPUT, self.tr('Input table')))
60-
self.addParameter(ParameterTableField(self.NAME_FIELD,
61-
self.tr('Category name field'),
62-
self.INPUT,
63-
ParameterTableField.DATA_TYPE_ANY))
64-
self.addParameter(ParameterTableField(self.VALUE_FIELD,
65-
self.tr('Value field'),
66-
self.INPUT,
67-
ParameterTableField.DATA_TYPE_NUMBER))
68-
69-
self.addOutput(OutputHTML(self.OUTPUT, self.tr('Bar plot')))
60+
61+
self.addParameter(QgsProcessingParameterFeatureSource(self.INPUT,
62+
self.tr('Input layer')))
63+
self.addParameter(QgsProcessingParameterTableField(self.NAME_FIELD,
64+
self.tr('Category name field'),
65+
None, self.INPUT, QgsProcessingParameterTableField.Any))
66+
self.addParameter(QgsProcessingParameterTableField(self.VALUE_FIELD,
67+
self.tr('Value field'),
68+
None, self.INPUT, QgsProcessingParameterTableField.Numeric))
69+
70+
self.addParameter(QgsProcessingParameterFileOutput(self.OUTPUT, self.tr('Added'), self.tr('HTML files (*.html)')))
71+
72+
self.addOutput(QgsProcessingOutputHtml(self.OUTPUT, self.tr('Bar plot')))
7073

7174
def name(self):
7275
return 'barplot'
@@ -75,16 +78,19 @@ def displayName(self):
7578
return self.tr('Bar plot')
7679

7780
def processAlgorithm(self, parameters, context, feedback):
78-
layer = QgsProcessingUtils.mapLayerFromString(self.getParameterValue(self.INPUT), context)
79-
namefieldname = self.getParameterValue(self.NAME_FIELD)
80-
valuefieldname = self.getParameterValue(self.VALUE_FIELD)
81+
source = self.parameterAsSource(parameters, self.INPUT, context)
8182

82-
output = self.getOutputValue(self.OUTPUT)
83+
namefieldname = self.parameterAsString(parameters, self.NAME_FIELD, context)
84+
valuefieldname = self.parameterAsString(parameters, self.VALUE_FIELD, context)
8385

84-
values = vector.values(layer, valuefieldname)
86+
output = self.parameterAsFileOutput(parameters, self.OUTPUT, context)
8587

86-
x_var = [i[namefieldname] for i in layer.getFeatures()]
88+
values = vector.values(source, valuefieldname)
89+
90+
x_var = [i[namefieldname] for i in source.getFeatures()]
8791

8892
data = [go.Bar(x=x_var,
8993
y=values[valuefieldname])]
9094
plt.offline.plot(data, filename=output, auto_open=False)
95+
96+
return {self.OUTPUT: output}

python/plugins/processing/algs/qgis/QGISAlgorithmProvider.py

+8-7
Original file line numberDiff line numberDiff line change
@@ -265,17 +265,18 @@ def getAlgs(self):
265265
Boundary(),
266266
BoundingBox()]
267267

268-
# if hasPlotly:
269-
# from .VectorLayerHistogram import VectorLayerHistogram
270-
# from .RasterLayerHistogram import RasterLayerHistogram
271-
# from .VectorLayerScatterplot import VectorLayerScatterplot
272-
# from .MeanAndStdDevPlot import MeanAndStdDevPlot
273-
# from .BarPlot import BarPlot
268+
if hasPlotly:
269+
# from .VectorLayerHistogram import VectorLayerHistogram
270+
# from .RasterLayerHistogram import RasterLayerHistogram
271+
# from .VectorLayerScatterplot import VectorLayerScatterplot
272+
# from .MeanAndStdDevPlot import MeanAndStdDevPlot
273+
from .BarPlot import BarPlot
274274
# from .PolarPlot import PolarPlot
275275
# from .BoxPlot import BoxPlot
276276
# from .VectorLayerScatterplot3D import VectorLayerScatterplot3D
277277
#
278-
# algs.extend([VectorLayerHistogram(), RasterLayerHistogram(),
278+
algs.extend([BarPlot()])
279+
#[VectorLayerHistogram(), RasterLayerHistogram(),
279280
# VectorLayerScatterplot(), MeanAndStdDevPlot(),
280281
# BarPlot(), PolarPlot(), BoxPlot(),
281282
# VectorLayerScatterplot3D()])

0 commit comments

Comments
 (0)