30
30
31
31
32
32
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 )
36
38
from processing .algs .qgis .QgisAlgorithm import QgisAlgorithm
37
- from processing .core .outputs import OutputHTML
38
39
from processing .tools import vector
39
40
40
41
@@ -56,17 +57,19 @@ def group(self):
56
57
57
58
def __init__ (self ):
58
59
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' )))
70
73
71
74
def name (self ):
72
75
return 'barplot'
@@ -75,16 +78,19 @@ def displayName(self):
75
78
return self .tr ('Bar plot' )
76
79
77
80
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 )
81
82
82
- output = self .getOutputValue (self .OUTPUT )
83
+ namefieldname = self .parameterAsString (parameters , self .NAME_FIELD , context )
84
+ valuefieldname = self .parameterAsString (parameters , self .VALUE_FIELD , context )
83
85
84
- values = vector . values ( layer , valuefieldname )
86
+ output = self . parameterAsFileOutput ( parameters , self . OUTPUT , context )
85
87
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 ()]
87
91
88
92
data = [go .Bar (x = x_var ,
89
93
y = values [valuefieldname ])]
90
94
plt .offline .plot (data , filename = output , auto_open = False )
95
+
96
+ return {self .OUTPUT : output }
0 commit comments