def test_declarative_overlay_projections(): """Test making a contour plot.""" data = xr.open_dataset(get_test_data('NAM_test.nc', as_file_obj=False)) data2 = xr.open_dataset(get_test_data('GFS_test.nc', as_file_obj=False)) contour = ContourPlot() contour.data = data contour.field = 'Geopotential_height_isobaric' contour.level = 300 * units.hPa contour.linecolor = 'red' contour.linestyle = '-' contour.linewidth = 2 contour.contours = np.arange(0, 20000, 120).tolist() contour2 = ContourPlot() contour2.data = data2 contour2.field = 'Geopotential_height_isobaric' contour2.level = 300 * units.hPa contour2.linecolor = 'blue' contour2.linestyle = '-' contour2.linewidth = 2 contour2.contours = np.arange(0, 20000, 120).tolist() panel = MapPanel() panel.area = (-124, -72, 20, 53) panel.projection = 'lcc' panel.layers = ['coastline', 'borders', 'usstates'] panel.plots = [contour, contour2] pc = PanelContainer() pc.size = (8, 8) pc.panels = [panel] pc.draw() return pc.figure
def test_latlon(): """Test our handling of lat/lon information.""" data = xr.open_dataset(get_test_data('irma_gfs_example.nc', as_file_obj=False)) img = ImagePlot() img.data = data img.field = 'Temperature_isobaric' img.level = 500 * units.hPa img.time = datetime(2017, 9, 5, 15, 0, 0) contour = ContourPlot() contour.data = data contour.field = 'Geopotential_height_isobaric' contour.level = img.level contour.time = img.time panel = MapPanel() panel.projection = 'lcc' panel.area = 'us' panel.plots = [img, contour] pc = PanelContainer() pc.panel = panel pc.draw() return pc.figure
def test_declarative_smooth_field(): """Test the smoothing of the field with smooth_field trait.""" data = xr.open_dataset(get_test_data('narr_example.nc', as_file_obj=False)) contour = ContourPlot() contour.data = data contour.field = 'Geopotential_height' contour.level = 700 * units.hPa contour.contours = list(range(0, 4000, 30)) contour.linewidth = 1 contour.linecolor = 'black' contour.smooth_field = 3 panel = MapPanel() panel.area = 'us' panel.projection = 'lcc' panel.layers = ['coastline', 'borders', 'usstates'] panel.plots = [contour] pc = PanelContainer() pc.size = (10.5, 10.5) pc.panels = [panel] pc.draw() return pc.figure
def test_declarative_smooth_contour(): """Test making a contour plot using smooth_contour.""" data = xr.open_dataset(get_test_data('narr_example.nc', as_file_obj=False)) contour = ContourPlot() contour.data = data contour.field = 'Temperature' contour.level = 700 * units.hPa contour.contours = 30 contour.linewidth = 1 contour.linecolor = 'red' contour.smooth_contour = 5 panel = MapPanel() panel.area = 'us' panel.projection = 'lcc' panel.layers = ['coastline', 'borders', 'usstates'] panel.plots = [contour] pc = PanelContainer() pc.size = (8.0, 8) pc.panels = [panel] pc.draw() return pc.figure
def test_latlon(): """Test our handling of lat/lon information.""" data = xr.open_dataset(get_test_data('irma_gfs_example.nc', as_file_obj=False)) img = ImagePlot() img.data = data img.field = 'Temperature_isobaric' img.level = 500 * units.hPa img.time = datetime(2017, 9, 5, 15, 0, 0) img.colorbar = None contour = ContourPlot() contour.data = data contour.field = 'Geopotential_height_isobaric' contour.level = img.level contour.time = img.time panel = MapPanel() panel.projection = 'lcc' panel.area = 'us' panel.plots = [img, contour] pc = PanelContainer() pc.panel = panel pc.draw() return pc.figure
def test_declarative_barb_earth_relative(): """Test making a contour plot.""" data = xr.open_dataset(get_test_data('NAM_test.nc', as_file_obj=False)) contour = ContourPlot() contour.data = data contour.field = 'Geopotential_height_isobaric' contour.level = 300 * units.hPa contour.linecolor = 'red' contour.linestyle = '-' contour.linewidth = 2 contour.contours = range(0, 20000, 120) barb = BarbPlot() barb.data = data barb.level = 300 * units.hPa barb.time = datetime(2016, 10, 31, 12) barb.field = ['u-component_of_wind_isobaric', 'v-component_of_wind_isobaric'] barb.skip = (5, 5) barb.color = 'black' barb.barblength = 6.5 barb.earth_relative = False panel = MapPanel() panel.area = (-124, -72, 20, 53) panel.projection = 'lcc' panel.layers = ['coastline', 'borders', 'usstates'] panel.plots = [contour, barb] pc = PanelContainer() pc.size = (8, 8) pc.panels = [panel] pc.draw() return pc.figure
def test_declarative_title_fontsize(): """Test adjusting the font size of a MapPanel's title text.""" data = xr.open_dataset(get_test_data('NAM_test.nc', as_file_obj=False)) contour = ContourPlot() contour.data = data contour.field = 'Geopotential_height_isobaric' contour.level = 300 * units.hPa contour.linewidth = 2 contour.contours = list(range(0, 2000, 12)) contour.scale = 1e-1 panel = MapPanel() panel.area = (-124, -72, 20, 53) panel.projection = 'lcc' panel.layers = ['coastline', 'borders', 'usstates'] panel.plots = [contour] panel.title = '300 mb Geopotential Height' panel.title_fontsize = 20 pc = PanelContainer() pc.size = (8, 8) pc.panels = [panel] pc.draw() return pc.figure
def test_declarative_contour_convert_units(fix_is_closed_polygon): """Test making a contour plot.""" data = xr.open_dataset(get_test_data('narr_example.nc', as_file_obj=False)) contour = ContourPlot() contour.data = data contour.field = 'Temperature' contour.level = 700 * units.hPa contour.contours = 30 contour.linewidth = 1 contour.linecolor = 'red' contour.linestyle = 'dashed' contour.clabels = True contour.plot_units = 'degC' panel = MapPanel() panel.area = 'us' panel.proj = 'lcc' panel.layers = ['coastline', 'borders', 'usstates'] panel.plots = [contour] pc = PanelContainer() pc.size = (8, 8) pc.panels = [panel] pc.draw() return pc.figure
def test_declarative_global_gfs(): """Test making a global contour plot using GFS.""" data = xr.open_dataset(get_test_data('GFS_global.nc', as_file_obj=False)) cntr = ContourPlot() cntr.data = data cntr.time = datetime(2021, 1, 30, 12) cntr.field = 'Geopotential_height_isobaric' cntr.level = 300 * units.hPa cntr.contours = np.arange(0, 100000, 120).tolist() cntr.linecolor = 'darkblue' cntr.linewidth = 1 panel = MapPanel() panel.area = [-180, 180, 10, 90] panel.projection = 'ps' panel.layers = ['coastline'] panel.plots = [cntr] pc = PanelContainer() pc.size = (8, 8) pc.panels = [panel] pc.draw() return pc.figure
def test_declarative_gridded_scale(): """Test making a contour plot.""" data = xr.open_dataset(get_test_data('NAM_test.nc', as_file_obj=False)) contour = ContourPlot() contour.data = data contour.field = 'Geopotential_height_isobaric' contour.level = 300 * units.hPa contour.linewidth = 2 contour.contours = np.arange(0, 2000, 12).tolist() contour.scale = 1e-1 contour.clabels = True panel = MapPanel() panel.area = (-124, -72, 20, 53) panel.projection = 'lcc' panel.layers = ['coastline', 'borders', 'usstates'] panel.plots = [contour] pc = PanelContainer() pc.size = (8, 8) pc.panels = [panel] pc.draw() return pc.figure
def test_no_field_error(): """Make sure we get a useful error when the field is not set.""" data = xr.open_dataset(get_test_data('narr_example.nc', as_file_obj=False)) contour = ContourPlot() contour.data = data contour.level = 700 * units.hPa with pytest.raises(ValueError): contour.draw()
def test_projection_object(): """Test that we can pass a custom map projection.""" data = xr.open_dataset(get_test_data('narr_example.nc', as_file_obj=False)) contour = ContourPlot() contour.data = data contour.level = 700 * units.hPa contour.field = 'Temperature' panel = MapPanel() panel.area = (-110, -60, 25, 55) panel.projection = ccrs.Mercator() panel.layers = [cfeature.LAKES] panel.plots = [contour] pc = PanelContainer() pc.panel = panel pc.draw() return pc.figure
def test_projection_object(ccrs, cfeature): """Test that we can pass a custom map projection.""" data = xr.open_dataset(get_test_data('narr_example.nc', as_file_obj=False)) contour = ContourPlot() contour.data = data contour.level = 700 * units.hPa contour.field = 'Temperature' panel = MapPanel() panel.area = (-110, -60, 25, 55) panel.projection = ccrs.Mercator() panel.layers = [cfeature.LAKES] panel.plots = [contour] pc = PanelContainer() pc.panel = panel pc.draw() return pc.figure
def test_ndim_error_scalar(cfeature): """Make sure we get a useful error when the field is not set.""" data = xr.open_dataset(get_test_data('narr_example.nc', as_file_obj=False)) contour = ContourPlot() contour.data = data contour.field = 'Temperature' contour.level = None panel = MapPanel() panel.area = (-110, -60, 25, 55) panel.projection = 'lcc' panel.layers = [cfeature.LAKES] panel.plots = [contour] pc = PanelContainer() pc.panel = panel with pytest.raises(ValueError): pc.draw()
def test_declarative_region_modifier_zoom_out(): """Test that '-' suffix on area string properly expands extent of map.""" data = xr.open_dataset(get_test_data('narr_example.nc', as_file_obj=False)) contour = ContourPlot() contour.data = data contour.field = 'Temperature' contour.level = 700 * units.hPa panel = MapPanel() panel.area = 'sc-' panel.layers = ['coastline', 'borders', 'usstates'] panel.plots = [contour] pc = PanelContainer() pc.size = (8.0, 8) pc.panels = [panel] pc.draw() return pc.figure
def test_declarative_events(): """Test that resetting traitlets properly propagates.""" data = xr.open_dataset(get_test_data('narr_example.nc', as_file_obj=False)) contour = ContourPlot() contour.data = data contour.field = 'Temperature' contour.level = 850 * units.hPa contour.contours = 30 contour.linewidth = 1 contour.linecolor = 'red' img = ImagePlot() img.data = data img.field = 'v_wind' img.level = 700 * units.hPa img.colormap = 'hot' img.image_range = (3000, 5000) panel = MapPanel() panel.area = 'us' panel.projection = 'lcc' panel.layers = ['coastline', 'borders', 'states'] panel.plots = [contour, img] pc = PanelContainer() pc.size = (8, 8.0) pc.panels = [panel] pc.draw() # Update some properties to make sure it regenerates the figure contour.linewidth = 2 contour.linecolor = 'green' contour.level = 700 * units.hPa contour.field = 'Specific_humidity' img.field = 'Geopotential_height' img.colormap = 'plasma' img.colorbar = 'horizontal' return pc.figure
def test_declarative_events(): """Test that resetting traitlets properly propagates.""" data = xr.open_dataset(get_test_data('narr_example.nc', as_file_obj=False)) contour = ContourPlot() contour.data = data contour.field = 'Temperature' contour.level = 850 * units.hPa contour.contours = 30 contour.linewidth = 1 contour.linecolor = 'red' img = ImagePlot() img.data = data img.field = 'v_wind' img.level = 700 * units.hPa img.colormap = 'hot' img.image_range = (3000, 5000) panel = MapPanel() panel.area = 'us' panel.proj = 'lcc' panel.layers = ['coastline', 'borders', 'states'] panel.plots = [contour, img] pc = PanelContainer() pc.size = (8, 8) pc.panels = [panel] pc.draw() # Update some properties to make sure it regenerates the figure contour.linewidth = 2 contour.linecolor = 'green' contour.level = 700 * units.hPa contour.field = 'Specific_humidity' img.field = 'Geopotential_height' img.colormap = 'plasma' return pc.figure
def test_declarative_contour_cam(): """Test making a contour plot with CAM data.""" data = xr.open_dataset(get_test_data('CAM_test.nc', as_file_obj=False)) contour = ContourPlot() contour.data = data contour.field = 'PN' contour.time = datetime.strptime('2020-11-29 00:00', '%Y-%m-%d %H:%M') contour.level = 1000 * units.hPa contour.linecolor = 'black' contour.contours = list(range(0, 1200, 4)) panel = MapPanel() panel.plots = [contour] panel.layout = (1, 1, 1) panel.layers = ['coastline', 'borders', 'states', 'land'] panel.plots = [contour] pc = PanelContainer() pc.panels = [panel] pc.draw() return pc.figure
def test_declarative_figsize(): """Test having an all float figsize.""" data = xr.open_dataset(get_test_data('narr_example.nc', as_file_obj=False)) contour = ContourPlot() contour.data = data contour.field = 'Temperature' contour.level = 700 * units.hPa contour.contours = 30 contour.linewidth = 1 contour.linecolor = 'red' panel = MapPanel() panel.area = 'us' panel.proj = 'lcc' panel.layers = ['coastline', 'borders', 'usstates'] panel.plots = [contour] pc = PanelContainer() pc.size = (10.5, 10.5) pc.panels = [panel] pc.draw() return pc.figure
def test_declarative_contour(): """Test making a contour plot.""" data = xr.open_dataset(get_test_data('narr_example.nc', as_file_obj=False)) contour = ContourPlot() contour.data = data contour.field = 'Temperature' contour.level = 700 * units.hPa contour.contours = 30 contour.linewidth = 1 contour.linecolor = 'red' panel = MapPanel() panel.area = 'us' panel.proj = 'lcc' panel.layers = ['coastline', 'borders', 'usstates'] panel.plots = [contour] pc = PanelContainer() pc.size = (8, 8) pc.panels = [panel] pc.draw() return pc.figure
Also shows how to control the maps that are plotted. Plots sample NARR data. """ import xarray as xr from metpy.cbook import get_test_data from metpy.plots import ContourPlot, ImagePlot, MapPanel, PanelContainer from metpy.units import units # Use sample NARR data for plotting narr = xr.open_dataset(get_test_data('narr_example.nc', as_file_obj=False)) ########################### # Create a contour plot of temperature contour = ContourPlot() contour.data = narr contour.field = 'Temperature' contour.level = 850 * units.hPa contour.linecolor = 'red' contour.contours = 15 ########################### # Create an image plot of Geopotential height img = ImagePlot() img.data = narr img.field = 'Geopotential_height' img.level = 850 * units.hPa ########################### # Plot the data on a map
Also shows how to control the maps that are plotted. Plots sample NARR data. """ import xarray as xr from metpy.cbook import get_test_data from metpy.plots import ContourPlot, ImagePlot, MapPanel, PanelContainer from metpy.units import units # Use sample NARR data for plotting narr = xr.open_dataset(get_test_data('narr_example.nc', as_file_obj=False)) ########################### # Create a contour plot of temperature contour = ContourPlot() contour.data = narr contour.field = 'Temperature' contour.level = 850 * units.hPa contour.linecolor = 'red' contour.contours = 15 ########################### # Create an image plot of Geopotential height img = ImagePlot() img.data = narr img.field = 'Geopotential_height' img.level = 850 * units.hPa ########################### # Plot the data on a map panel = MapPanel()