@@ -9,6 +9,7 import zmq | |||||
9 | import numpy |
|
9 | import numpy | |
10 | import matplotlib |
|
10 | import matplotlib | |
11 | import matplotlib.pyplot as plt |
|
11 | import matplotlib.pyplot as plt | |
|
12 | from matplotlib.patches import Polygon | |||
12 | from mpl_toolkits.axes_grid1 import make_axes_locatable |
|
13 | from mpl_toolkits.axes_grid1 import make_axes_locatable | |
13 | from matplotlib.ticker import FuncFormatter, LinearLocator, MultipleLocator |
|
14 | from matplotlib.ticker import FuncFormatter, LinearLocator, MultipleLocator | |
14 |
|
15 | |||
@@ -118,6 +119,7 class PlotData(Operation, Process): | |||||
118 | self.channels = kwargs.get('channels', None) |
|
119 | self.channels = kwargs.get('channels', None) | |
119 | self.titles = kwargs.get('titles', []) |
|
120 | self.titles = kwargs.get('titles', []) | |
120 | self.polar = False |
|
121 | self.polar = False | |
|
122 | self.grid = kwargs.get('grid', False) | |||
121 |
|
123 | |||
122 | def __fmtTime(self, x, pos): |
|
124 | def __fmtTime(self, x, pos): | |
123 | ''' |
|
125 | ''' | |
@@ -392,7 +394,7 class PlotData(Operation, Process): | |||||
392 |
|
394 | |||
393 | Y = numpy.array([1, 2, 5, 10, 20, 50, 100, 200, 500, 1000, 2000, 5000]) |
|
395 | Y = numpy.array([1, 2, 5, 10, 20, 50, 100, 200, 500, 1000, 2000, 5000]) | |
394 | i = 1 if numpy.where(abs(ymax-ymin) <= Y)[0][0] < 0 else numpy.where(abs(ymax-ymin) <= Y)[0][0] |
|
396 | i = 1 if numpy.where(abs(ymax-ymin) <= Y)[0][0] < 0 else numpy.where(abs(ymax-ymin) <= Y)[0][0] | |
395 |
ystep = Y[i] / |
|
397 | ystep = Y[i] / 10. | |
396 |
|
398 | |||
397 | for n, ax in enumerate(self.axes): |
|
399 | for n, ax in enumerate(self.axes): | |
398 | if ax.firsttime: |
|
400 | if ax.firsttime: | |
@@ -428,6 +430,8 class PlotData(Operation, Process): | |||||
428 | ax.cbar.set_label(self.cb_labels[n], size=8) |
|
430 | ax.cbar.set_label(self.cb_labels[n], size=8) | |
429 | else: |
|
431 | else: | |
430 | ax.cbar = None |
|
432 | ax.cbar = None | |
|
433 | if self.grid: | |||
|
434 | ax.grid(True) | |||
431 |
|
435 | |||
432 | if not self.polar: |
|
436 | if not self.polar: | |
433 | ax.set_xlim(xmin, xmax) |
|
437 | ax.set_xlim(xmin, xmax) | |
@@ -1033,11 +1037,8 class PlotPolarMapData(PlotData): | |||||
1033 | self.cb_labels = self.data.meta['units'] |
|
1037 | self.cb_labels = self.data.meta['units'] | |
1034 | self.lat = self.data.meta['latitude'] |
|
1038 | self.lat = self.data.meta['latitude'] | |
1035 | self.lon = self.data.meta['longitude'] |
|
1039 | self.lon = self.data.meta['longitude'] | |
1036 |
self.xmin, self.xmax = float(km2deg( |
|
1040 | self.xmin, self.xmax = float(km2deg(self.xmin) + self.lon), float(km2deg(self.xmax) + self.lon) | |
1037 |
self.ymin, self.ymax = float(km2deg( |
|
1041 | self.ymin, self.ymax = float(km2deg(self.ymin) + self.lat), float(km2deg(self.ymax) + self.lat) | |
1038 | log.error(type(self.ymin)) |
|
|||
1039 | #print km2deg(-50) + self.lon, km2deg(50) + self.lon |
|
|||
1040 | #print km2deg(-50) + self.lat, km2deg(50) + self.lat |
|
|||
1041 | # self.polar = True |
|
1042 | # self.polar = True | |
1042 |
|
1043 | |||
1043 | def plot(self): |
|
1044 | def plot(self): | |
@@ -1079,15 +1080,44 class PlotPolarMapData(PlotData): | |||||
1079 | if self.mode == 'A': |
|
1080 | if self.mode == 'A': | |
1080 | continue |
|
1081 | continue | |
1081 |
|
1082 | |||
1082 | f = open('/home/jespinoza/workspace/schain_scripts/distrito.csv') |
|
1083 | # plot district names | |
1083 |
|
1084 | f = open('/data/workspace/schain_scripts/distrito.csv') | ||
1084 | for line in f: |
|
1085 | for line in f: | |
1085 | label, lon, lat = [s.strip() for s in line.split(',') if s] |
|
1086 | label, lon, lat = [s.strip() for s in line.split(',') if s] | |
1086 | lat = float(lat) |
|
1087 | lat = float(lat) | |
1087 | lon = float(lon) |
|
1088 | lon = float(lon) | |
1088 | ax.plot(lon, lat, '.b', ms=2) |
|
1089 | # ax.plot(lon, lat, '.b', ms=2) | |
1089 | ax.text(lon, lat, label.decode('utf8'), ha='center', va='bottom', size='8', color='black') |
|
1090 | ax.text(lon, lat, label.decode('utf8'), ha='center', va='bottom', size='8', color='black') | |
1090 |
|
1091 | |||
|
1092 | # plot limites | |||
|
1093 | limites =[] | |||
|
1094 | tmp = [] | |||
|
1095 | for line in open('/data/workspace/schain_scripts/lima.csv'): | |||
|
1096 | if '#' in line: | |||
|
1097 | if tmp: | |||
|
1098 | limites.append(tmp) | |||
|
1099 | tmp = [] | |||
|
1100 | continue | |||
|
1101 | values = line.strip().split(',') | |||
|
1102 | tmp.append((float(values[0]), float(values[1]))) | |||
|
1103 | for points in limites: | |||
|
1104 | ax.add_patch(Polygon(points, ec='k', fc='none', ls='--', lw=0.5)) | |||
|
1105 | ||||
|
1106 | # plot Cuencas | |||
|
1107 | for cuenca in ('rimac', 'lurin', 'mala', 'chillon', 'chilca', 'chancay-huaral'): | |||
|
1108 | f = open('/data/workspace/schain_scripts/{}.csv'.format(cuenca)) | |||
|
1109 | values = [line.strip().split(',') for line in f] | |||
|
1110 | points = [(float(s[0]), float(s[1])) for s in values] | |||
|
1111 | ax.add_patch(Polygon(points, ec='b', fc='none')) | |||
|
1112 | ||||
|
1113 | # plot grid | |||
|
1114 | for r in (15, 30, 45, 60): | |||
|
1115 | ax.add_artist(plt.Circle((self.lon, self.lat), km2deg(r), color='0.6', fill=False, lw=0.2)) | |||
|
1116 | ax.text( | |||
|
1117 | self.lon + (km2deg(r))*numpy.cos(60*numpy.pi/180), | |||
|
1118 | self.lat + (km2deg(r))*numpy.sin(60*numpy.pi/180), | |||
|
1119 | '{}km'.format(r), | |||
|
1120 | ha='center', va='bottom', size='8', color='0.6', weight='heavy') | |||
1091 |
|
1121 | |||
1092 | if self.mode == 'E': |
|
1122 | if self.mode == 'E': | |
1093 | title = 'El={}$^\circ$'.format(self.data.meta['elevation']) |
|
1123 | title = 'El={}$^\circ$'.format(self.data.meta['elevation']) |
General Comments 0
You need to be logged in to leave comments.
Login now