def processAlgorithm(self, parameters, context, feedback): source = self.parameterAsSource(parameters, self.INPUT, context) namefieldname = self.parameterAsString(parameters, self.NAME_FIELD, context) # NOQA FIXME unused? valuefieldname = self.parameterAsString(parameters, self.VALUE_FIELD, context) output = self.parameterAsFileOutput(parameters, self.OUTPUT, context) values = vector.values(source, 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, auto_open=False) return {self.OUTPUT: output}
def wind_rose_plot(df_wind_rose): data = [] wind_rose = pd.DataFrame({ 'wind_dir_cat': np.array( 'N NNE NE ENE E ESE SE SSE S SSW SW WSW W WNW NW NNW'.split()), 'wind_dir': [0] * 16 }) i = 0 bfs = df_wind_rose.groupby('wind_speed_bfs') color = cl.scales[str(df_wind_rose.wind_speed_bfs.unique().shape[0] + 1)]['qual']['Set1'] for bfs_wind, group_bfs in bfs: df1 = pd.DataFrame({ 'wind_dir_cat': group_bfs.wind_dir_cat.value_counts().index, 'wind_dir': group_bfs.wind_dir_cat.value_counts().values }) df2 = pd.merge(wind_rose, df1, how='left', on='wind_dir_cat').fillna(0) data.append( go.Area(t=df2.wind_dir_cat, r=df2.wind_dir_y.fillna(0), marker=dict(color=color[i]), name=bfs_wind)) i += 1 layout_windrose = dict( title='Rosa de los vientos de ' + df_wind_rose.model_name.iloc[0].title() + 'en ' + df_wind_rose.name.iloc[0].title(), orientation=270, barmode='stack', ) plot(dict(data=data, layout=layout_windrose), filename=df_wind_rose.model_name.iloc[0].title() + '_' + df_wind_rose.name.iloc[0].title() + 'windrose.html', auto_open=False, image='png', image_filename=df_wind_rose.model_name.iloc[0].title() + '_' + df_wind_rose.name.iloc[0].title())
cardinal_pops = pd.DataFrame({'direction': dirs}) sums = pop12.groupby(['income', 'card'])['population'].sum().reset_index() sums = sums.drop(22) min_max = sklearn.preprocessing.MinMaxScaler() X = sums['population'] X = X.values.reshape(-1, 1) sums['popscaled'] = min_max.fit_transform(X) sums['poppercent'] = sums['population']/(7128176935) trace1 = go.Area( r=list(sums[sums['income'] == 'High income']['poppercent']), t=list(sums[sums['income'] == 'High income']['card']), name='High Income', marker=dict( color='#F79D84' ) ) trace2 = go.Area( r=list(sums[sums['income'] == 'Upper middle income']['poppercent']), t=list(sums[sums['income'] == 'Upper middle income']['card']), name='Upper Middle Income', marker=dict( color='#6184D8' ) ) trace3 = go.Area( r=list(sums[sums['income'] == 'Lower middle income']['poppercent']), t=list(sums[sums['income'] == 'Lower middle income']['card']), name='Lower Middle Income',
def windrose(self, column, color=None): color, _ = self.__get_base_args(color, 1) args = dict(t=self.df.index, r=list(self.df[column]), marker={'color': color}) self.__add_series(go.Area(args))