#-*-coding:utf-8-*-; import matplotlib.pyplot as plt from matplotlib import gridspec import numpy as np def plotHH(t,sP,sQ): fig = plt.figure() gs = gridspec.GridSpec(2, 1, height_ratios=[1, 2]) # HYDROGRAM CHART ax = plt.subplot(gs[1]) ax.plot(t,sQ) ax.set_ylabel(u'Q(m³/s)', color='b') ax.set_xlabel('Time (min.)') ax.tick_params(axis='y', colors='b') ax.xaxis.grid(b=True, which='major', color='.7', linestyle='-') ax.yaxis.grid(b=True, which='major', color='.7', linestyle='-') ax.set_xlim(min(t), max(t)) ax.set_ylim(0, max(sQ)*1.2) # PRECIPITATION/HYETOGRAPH CHART ax2 = plt.subplot(gs[0]) ax2.bar(t, sP, 1, color='#b0c4de') ax2.xaxis.grid(b=True, which='major', color='.7', linestyle='-') ax2.yaxis.grid(b=True, which='major', color='0.7', linestyle='-') ax2.set_ylabel('P(mm)') ax2.set_xlim(min(t), max(t)) plt.setp(ax2.get_xticklabels(), visible=False) plt.tight_layout() ax2.invert_yaxis() plt.gcf().subplots_adjust(bottom=0.15) plt.show() #plt.savefig(filename,format='pdf') plt.close(fig)
Python programming, with examples in hydraulic engineering and in hydrology.
Showing posts with label Line. Show all posts
Showing posts with label Line. Show all posts
Wednesday, November 22, 2017
Matplotlib template for Precipitation and Flow over time - Hidrograms and Hyetographs
This code works in python3, to plot a hyetograph - precipitation event (sP), together with a hydrograph (sQ), both in the same time series (t).
Labels:
bar,
Chart,
flow,
hydrograph,
hyetograph,
Line,
matplotlib,
plt,
precipitation,
python3
Thursday, November 17, 2016
Drawing Coordinates as Line in QGIS - PyQGIS
In this post I'll show some code for drawing a line from a list of coordinates, and saving it in a temporary vector layer.
You can implement the code below to get the coordinates from a text file, clipboard, or any user input.
Below are two functions that, called with the layer name and list of points as arguments, build a Line or Point temporary layer.
+1 / share if you like the post and the blog!
-----------
You can implement the code below to get the coordinates from a text file, clipboard, or any user input.
Below are two functions that, called with the layer name and list of points as arguments, build a Line or Point temporary layer.
+1 / share if you like the post and the blog!
-----------
def createLineLay(name,lstP): vl = QgsVectorLayer("Linestring", name, "memory") #pr = vl.dataProvider() vl.startEditing() vl.addAttribute(QgsField("id", QVariant.Int)) vl.updateFields() fet = QgsFeature(vl.pendingFields()) lstPP = [] for p in lstP: lstPP.append(QgsPoint(float(p[0]),float(p[1]))) lstPP.append(QgsPoint(float(lstP[0][0]),float(lstP[0][1]))) fet.setGeometry(QgsGeometry.fromPolyline(lstPP)) fields = vl.pendingFields() fet.setFields( fields, True ) fet['id'] = 0 pr = vl.dataProvider() pr.addFeatures( [ fet ] ) vl.commitChanges() QgsMapLayerRegistry.instance().addMapLayer(vl) def createLayPts(name, lstP): vl = QgsVectorLayer("Point", name, "memory") #pr = vl.dataProvider() vl.startEditing() vl.addAttribute(QgsField("ID", QVariant.Int)) vl.addAttribute(QgsField("X", QVariant.Double)) vl.addAttribute(QgsField("Y", QVariant.Double)) vl.updateFields() idP = 0 for p in lstP: fet = QgsFeature(vl.pendingFields()) fet.setGeometry(QgsGeometry.fromPoint(QgsPoint(float(p[0]),float(p[1])))) fields = vl.pendingFields() fet.setFields( fields, True ) fet["ID"] = idP fet['X'] = p[0] fet['Y'] = p[1] pr = vl.dataProvider() pr.addFeatures( [ fet ] ) vl.commitChanges() idP +=1 QgsMapLayerRegistry.instance().addMapLayer(vl)
Subscribe to:
Posts (Atom)