@@ -379,3 +379,234 class PolarMapPlot(Plot): | |||||
379 | self.save_labels = ['{}-{}'.format(lbl, label) for lbl in self.labels] |
|
379 | self.save_labels = ['{}-{}'.format(lbl, label) for lbl in self.labels] | |
380 | self.titles = ['{} {}'.format( |
|
380 | self.titles = ['{} {}'.format( | |
381 | self.data.parameters[x], title) for x in self.channels] |
|
381 | self.data.parameters[x], title) for x in self.channels] | |
|
382 | ||||
|
383 | class MP150KmRTIPlot(Plot): | |||
|
384 | ''' | |||
|
385 | Plot for data_xxxx object | |||
|
386 | ''' | |||
|
387 | ||||
|
388 | CODE = 'param' | |||
|
389 | colormap = 'viridis' | |||
|
390 | plot_type = 'pcolorbuffer' | |||
|
391 | ||||
|
392 | def setup(self): | |||
|
393 | self.xaxis = 'time' | |||
|
394 | self.ncols = 1 | |||
|
395 | self.nrows = self.data.shape('param')[0] | |||
|
396 | self.nplots = self.nrows | |||
|
397 | self.plots_adjust.update({'hspace':0.8, 'left': 0.1, 'bottom': 0.08, 'right':0.95, 'top': 0.95}) | |||
|
398 | ||||
|
399 | if not self.xlabel: | |||
|
400 | self.xlabel = 'Time' | |||
|
401 | ||||
|
402 | self.ylabel = 'Range [km]' | |||
|
403 | if not self.titles: | |||
|
404 | self.titles = ['Param {}'.format(x) for x in range(self.nrows)] | |||
|
405 | ||||
|
406 | def update(self, dataOut): | |||
|
407 | data = { | |||
|
408 | #'param' : numpy.concatenate([getattr(dataOut, attr) for attr in self.attr_data], axis=0)[0:3,:] # SNL, VERTICAL, ZONAL | |||
|
409 | 'param' : dataOut.data_output[0:3,:] # SNL, VERTICAL, ZONAL | |||
|
410 | } | |||
|
411 | ||||
|
412 | meta = {} | |||
|
413 | ||||
|
414 | return data, meta | |||
|
415 | ||||
|
416 | def plot(self): | |||
|
417 | # self.data.normalize_heights() | |||
|
418 | self.x = self.data.times | |||
|
419 | self.y = self.data.yrange | |||
|
420 | self.z = self.data['param'] | |||
|
421 | ||||
|
422 | ||||
|
423 | self.z = numpy.ma.masked_invalid(self.z) | |||
|
424 | ||||
|
425 | if self.decimation is None: | |||
|
426 | x, y, z = self.fill_gaps(self.x, self.y, self.z) | |||
|
427 | else: | |||
|
428 | x, y, z = self.fill_gaps(*self.decimate()) | |||
|
429 | ||||
|
430 | for n, ax in enumerate(self.axes): | |||
|
431 | self.zmax = self.zmax if self.zmax is not None else numpy.max( | |||
|
432 | self.z[n]) | |||
|
433 | self.zmin = self.zmin if self.zmin is not None else numpy.min( | |||
|
434 | self.z[n]) | |||
|
435 | ||||
|
436 | if ax.firsttime: | |||
|
437 | if self.zlimits is not None: | |||
|
438 | self.zmin, self.zmax = self.zlimits[n] | |||
|
439 | ||||
|
440 | ax.plt = ax.pcolormesh(x, y, z[n].T * self.factors[n], | |||
|
441 | vmin=self.zmin, | |||
|
442 | vmax=self.zmax, | |||
|
443 | cmap=self.cmaps[n] | |||
|
444 | ) | |||
|
445 | else: | |||
|
446 | if self.zlimits is not None: | |||
|
447 | self.zmin, self.zmax = self.zlimits[n] | |||
|
448 | ax.plt.remove() | |||
|
449 | ax.plt = ax.pcolormesh(x, y, z[n].T * self.factors[n], | |||
|
450 | vmin=self.zmin, | |||
|
451 | vmax=self.zmax, | |||
|
452 | cmap=self.cmaps[n] | |||
|
453 | ) | |||
|
454 | ||||
|
455 | class AverageDriftsPlot_v2(Plot): | |||
|
456 | ''' | |||
|
457 | Plot for average 150 Km echoes | |||
|
458 | ''' | |||
|
459 | ||||
|
460 | CODE = 'average' | |||
|
461 | plot_type = 'scatterbuffer' | |||
|
462 | ||||
|
463 | def setup(self): | |||
|
464 | self.xaxis = 'time' | |||
|
465 | self.ncols = 1 | |||
|
466 | ||||
|
467 | self.nplots = 2 | |||
|
468 | self.nrows = 2 | |||
|
469 | ||||
|
470 | self.ylabel = 'Velocity\nm/s' | |||
|
471 | self.xlabel = 'Local time' | |||
|
472 | #self.titles = ['VERTICAL VELOCITY: AVERAGE AND ERRORS', 'ZONAL VELOCITY: AVERAGE AND ERRORS'] | |||
|
473 | self.titles = ['VERTICAL VELOCITY: AVERAGE', 'ZONAL VELOCITY: AVERAGE'] | |||
|
474 | ||||
|
475 | self.colorbar = False | |||
|
476 | self.plots_adjust.update({'hspace':0.5, 'left': 0.1, 'bottom': 0.1, 'right':0.95, 'top': 0.95 }) | |||
|
477 | ||||
|
478 | ||||
|
479 | def update(self, dataOut): | |||
|
480 | ||||
|
481 | data = {} | |||
|
482 | meta = {} | |||
|
483 | ||||
|
484 | #data['average']= numpy.nanmean(dataOut.data_output[1:3,:], axis=1) # VERTICAL, ZONAL | |||
|
485 | data['average']= numpy.nanmean(dataOut.data_output[1:3,:], axis=1) # VERTICAL, ZONAL | |||
|
486 | data['error']= numpy.nanmean(dataOut.data_output[3:,:], axis=1) # ERROR VERTICAL, ERROR ZONAL | |||
|
487 | meta['yrange'] = numpy.array([]) | |||
|
488 | ||||
|
489 | return data, meta | |||
|
490 | ||||
|
491 | def plot(self): | |||
|
492 | ||||
|
493 | self.x = self.data.times | |||
|
494 | #self.xmin = self.data.min_time | |||
|
495 | #self.xmax = self.xmin + self.xrange * 60 * 60 | |||
|
496 | self.y = self.data['average'] | |||
|
497 | print('self.y:', self.y.shape) | |||
|
498 | self.y_error = self.data['error'] | |||
|
499 | print('self.y_error:', self.y_error.shape) | |||
|
500 | ||||
|
501 | for n, ax in enumerate(self.axes): | |||
|
502 | if ax.firsttime: | |||
|
503 | self.ymin = self.ymin if self.ymin is not None else -50 | |||
|
504 | self.ymax = self.ymax if self.ymax is not None else 50 | |||
|
505 | self.axes[n].plot(self.x, self.y[n], c='r', ls=':', lw=1) | |||
|
506 | else: | |||
|
507 | self.axes[n].lines[0].set_data(self.x, self.y[n]) | |||
|
508 | ''' | |||
|
509 | for n, ax in enumerate(self.axes): | |||
|
510 | ||||
|
511 | if ax.firsttime: | |||
|
512 | self.ymin = self.ymin if self.ymin is not None else -50 | |||
|
513 | self.ymax = self.ymax if self.ymax is not None else 50 | |||
|
514 | ax.scatter(self.x, self.y[n], c='g', s=0.8) | |||
|
515 | #ax.errorbar(self.x, self.y[n], yerr = self.y_error[n,:], ecolor='r', elinewidth=0.2, fmt='|') | |||
|
516 | else: | |||
|
517 | ax.scatter(self.x, self.y[n], c='g', s=0.8) | |||
|
518 | #ax.errorbar(self.x, self.y[n], yerr = self.y_error[n,:], ecolor='r', elinewidth=0.2, fmt='|') | |||
|
519 | ''' | |||
|
520 | class AverageDriftsPlot_bck(Plot): | |||
|
521 | ''' | |||
|
522 | Plot for average 150 Km echoes | |||
|
523 | ''' | |||
|
524 | CODE = 'average' | |||
|
525 | plot_type = 'scatterbuffer' | |||
|
526 | ||||
|
527 | def setup(self): | |||
|
528 | self.xaxis = 'time' | |||
|
529 | self.ncols = 1 | |||
|
530 | self.nplots = 2 | |||
|
531 | self.nrows = 2 | |||
|
532 | self.ylabel = 'Velocity\nm/s' | |||
|
533 | self.xlabel = 'Time' | |||
|
534 | self.titles = ['VERTICAL VELOCITY: AVERAGE', 'ZONAL VELOCITY: AVERAGE'] | |||
|
535 | self.colorbar = False | |||
|
536 | self.plots_adjust.update({'hspace':0.5, 'left': 0.1, 'bottom': 0.1, 'right':0.95, 'top': 0.95 }) | |||
|
537 | ||||
|
538 | ||||
|
539 | ||||
|
540 | def update(self, dataOut): | |||
|
541 | ||||
|
542 | data = {} | |||
|
543 | meta = {} | |||
|
544 | data['average']= numpy.nanmean(dataOut.data_output[1:3,:], axis=1) # VERTICAL, ZONAL | |||
|
545 | meta['yrange'] = numpy.array([]) | |||
|
546 | ||||
|
547 | return data, meta | |||
|
548 | ||||
|
549 | def plot(self): | |||
|
550 | ||||
|
551 | self.x = self.data.times | |||
|
552 | self.y = self.data['average'] | |||
|
553 | ||||
|
554 | for n, ax in enumerate(self.axes): | |||
|
555 | if ax.firsttime: | |||
|
556 | ||||
|
557 | if self.zlimits is not None: | |||
|
558 | self.axes[n].set_ylim(self.zlimits[n]) | |||
|
559 | self.axes[n].plot(self.x, self.y[n], c='r', ls='-', lw=1) | |||
|
560 | else: | |||
|
561 | ||||
|
562 | if self.zlimits is not None: | |||
|
563 | ax.set_ylim((self.zlimits[n])) | |||
|
564 | self.axes[n].lines[0].set_data(self.x, self.y[n]) | |||
|
565 | ||||
|
566 | class AverageDriftsPlot(Plot): | |||
|
567 | ''' | |||
|
568 | Plot for average 150 Km echoes | |||
|
569 | ''' | |||
|
570 | CODE = 'average' | |||
|
571 | plot_type = 'scatterbuffer' | |||
|
572 | ||||
|
573 | def setup(self): | |||
|
574 | self.xaxis = 'time' | |||
|
575 | self.ncols = 1 | |||
|
576 | self.nplots = 2 | |||
|
577 | self.nrows = 2 | |||
|
578 | self.ylabel = 'Velocity\nm/s' | |||
|
579 | self.xlabel = 'Time' | |||
|
580 | self.titles = ['VERTICAL VELOCITY: AVERAGE', 'ZONAL VELOCITY: AVERAGE'] | |||
|
581 | self.colorbar = False | |||
|
582 | self.plots_adjust.update({'hspace':0.5, 'left': 0.1, 'bottom': 0.1, 'right':0.95, 'top': 0.95 }) | |||
|
583 | ||||
|
584 | ||||
|
585 | ||||
|
586 | def update(self, dataOut): | |||
|
587 | ||||
|
588 | data = {} | |||
|
589 | meta = {} | |||
|
590 | data['average']= dataOut.avg_output[0:2] # VERTICAL, ZONAL velocities | |||
|
591 | meta['yrange'] = numpy.array([]) | |||
|
592 | ||||
|
593 | return data, meta | |||
|
594 | ||||
|
595 | def plot(self): | |||
|
596 | ||||
|
597 | self.x = self.data.times | |||
|
598 | self.y = self.data['average'] | |||
|
599 | ||||
|
600 | for n, ax in enumerate(self.axes): | |||
|
601 | ||||
|
602 | if ax.firsttime: | |||
|
603 | ||||
|
604 | if self.zlimits is not None: | |||
|
605 | ax.set_ylim((self.zlimits[n])) | |||
|
606 | self.axes[n].plot(self.x, self.y[n], c='r', ls='-', lw=1) | |||
|
607 | else: | |||
|
608 | ||||
|
609 | if self.zlimits is not None: | |||
|
610 | ax.set_ylim((self.zlimits[n])) | |||
|
611 | self.axes[n].lines[0].set_data(self.x, self.y[n]) | |||
|
612 |
General Comments 0
You need to be logged in to leave comments.
Login now