Repository navigation
Enhance METplotpy to plot NetCDF output from MODE to replace MET's deprecated plot_mode_field utility #560
Description
Describe the New Feature
Issue dtcenter/MET#3322 and corresponding PR dtcenter/MET#3325 deprecated and remove the plot_mode_field utility to reduce MET's external dependencies. With that change, cairo, freetype, pixman, and Ghostscript fonts are no longer required. plot_mode_field was added in 2014, long before plotting functionality existed through METplotpy.
Recommend enhancing METplotpy to provide functionality roughly equivalent to plot_mode_field, but use input from METplus scientists to advise on desired features and functionality.
For reference, here's what the output from plot_mode_field's unit tests looked like:



You do NOT need to exactly replicate these images. Instead, use advice from scientists to improve upon them.
Acceptance Testing
List input data types and sources.
Describe tests required for new functionality.
Time Estimate
Estimate the amount of work required here.
Issues should represent approximately 1 to 3 days of work.
Sub-Issues
Consider breaking the new feature down into sub-issues.
- Add a checkbox for each sub-issue here.
Relevant Deadlines
List relevant project deadlines here or state NONE.
Funding Source
Define the source of funding and account keys here or state NONE.
Define the Metadata
Assignee
- Select engineer(s) or no engineer required
- Select scientist(s) or no scientist required
Labels
- Review default alert labels
- Select component(s)
- Select priority
- Select requestor(s)
Milestone and Projects###
- Select Milestone as a METplotpy-X.Y.Z version, Consider for Next Release, or Backlog of Development Ideas
- For a METplotpy-X.Y.Z version, select the METplotpy-X.Y.Z Development project
Define Related Issue(s)
Consider the impact to the other METplus components.
New Feature Checklist
See the METplus Workflow for details.
- Complete the issue definition above, including the Time Estimate and Funding source.
- Fork this repository or create a branch of develop.
Branch name:feature_<Issue Number>_<Description> - Complete the development and test your changes.
- Add/update log messages for easier debugging.
- Add/update unit tests.
- Add/update documentation.
- Add any new Python packages to the METplus Components Python Requirements table.
- Push local changes to GitHub.
- Submit a pull request to merge into develop.
Pull request:feature <Issue Number> <Description> - Define the pull request metadata, as permissions allow.
Select: Reviewer(s) and Development issue
Select: Milestone as the next official version
Select: METplotpy-X.Y.Z Development project for development toward the next official release - Iterate until the reviewer(s) accept and merge your changes.
- Delete your fork or branch.
- Close this issue.
Metadata
Metadata
Assignees
Labels
Type
Projects
- StatusShow more project fields🏗 In progress
Activity
bikegeek commentedon Aug 6, 2026
@KathrynNewman , @michelleharrold , @DanielAdriaansen , @CPKalb, could you please elaborate on the features you want in the METplotpy version of the plot_mode_field plot?
Some questions:
It looks like the deprecated plot_mode_field utility was plotting the areas identified by their object_id
michelleharrold commentedon Aug 6, 2026
@bikegeek and @KathrynNewman, as a starting point, here is an example of the plotting script I am using for MODE data. It's functionality likely needs to be expanded, but I at least wanted to provide an example. It can plot the raw fcst and obs field as well as the MODE objects for the fcst and obs. This example works for global fcst data and IMERG that has been run through MODE, but it hasn't been tested on limited-area domains. In my opinion, focusing on the NetCDF output is the best course. Thanks!
plot_mode_objects_new.py