diff --git a/notebooks/1-comparison.ipynb b/notebooks/1-comparison.ipynb
index 9744e29..410e323 100644
--- a/notebooks/1-comparison.ipynb
+++ b/notebooks/1-comparison.ipynb
@@ -12,18 +12,18 @@
"metadata": {},
"source": [
"## Overview\n",
- "There are nearly endless possibilities when it comes to data visualization in Python. Some of these choices can be overwhelming. This chapter aims to lay out and distinguish different Python visualization libraries so that you are more equipped to make the right choice for your data visualization needs. This Cookbook is not a comprehensive tutorial on these packages, but we can offere enough information and links to documentation or relevant tutorials to help get you started.\n",
+ "There are nearly endless possibilities when it comes to data visualization in Python. Some of these choices can be overwhelming. This chapter aims to lay out and distinguish between different Python visualization libraries so that you are better equipped to make the right choice for your data visualization needs. This cookbook is not a comprehensive tutorial on these packages, but we can offer enough information and resources to help get you started.\n",
"\n",
"1. Matplotlib\n",
"1. Cartopy\n",
"1. GeoCAT-viz\n",
"1. MetPy\n",
- "1. Vapor\n",
+ "1. VAPOR\n",
"\n",
"```{admonition} Info\n",
":class: tip\n",
"\n",
- "The plotting libraries mentioned here are either ones used extensively by the authors of this Cookbook OR ones that we get asked about a lot when giving plotting tutorials. This does not cover every library that can be used for plotting in the Python scientific ecosystem, but should cover the more popular packages you might come across.\n",
+ "The plotting libraries mentioned here are either ones used extensively by the authors of this Cookbook OR ones that we get asked about a lot when giving data visualization tutorials. This does not cover every library that can be used for plotting in Python, but should cover the more popular packages you might come across.\n",
"\n",
"Missing a plotting library that you use and want others to know more about? Let us know by opening a [GitHub Issue](https://github.com/ProjectPythia/advanced-viz-cookbook/issues).\n"
]
@@ -39,13 +39,7 @@
"| [Matplotlib](https://foundations.projectpythia.org/core/matplotlib.html) | Necessary | |\n",
"| [Cartopy](https://foundations.projectpythia.org/core/cartopy.html) | Necessary | |\n",
"\n",
- "- **Time to learn**: 50 minutes"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
+ "- **Time to learn**: 10 minutes\n",
"---"
]
},
@@ -55,9 +49,12 @@
"source": [
"## Matplotlib\n",
"\n",
- "\n",
+ "```{image} images/logos/matplotlib.svg\n",
+ ":alt: Matplotlib logo\n",
+ ":width: 250px\n",
+ "```\n",
"\n",
- "Matplotlib is the workhorse of Python visualization needs. It is a comprehensive plotting library that has the capacity to make static, animated, or interactive visualizations. It is hard to imagine plotting in Python without first getting comfortable with Matplotlib. Be sure to check out the [Matplotlib documentation](https://matplotlib.org/) as well as the [Pythia foundations chapter on Matplotlib](https://foundations.projectpythia.org/core/matplotlib.html) for guidance.\n",
+ "Matplotlib is the workhorse of the Python visualization landscape. It is a comprehensive plotting library that has the capacity to make static, animated, or interactive visualizations. It is hard to imagine plotting in Python without first getting comfortable with Matplotlib. Be sure to check out the [Matplotlib documentation](https://matplotlib.org/) as well as the [Pythia foundations chapter on Matplotlib](https://foundations.projectpythia.org/core/matplotlib.html) for guidance.\n",
"\n",
"Matplotlib's syntax should feel familiar to anyone who has plotted data in Matlab.\n",
"\n",
@@ -93,9 +90,12 @@
"source": [
"## Cartopy\n",
"\n",
- "\n",
+ "```{image} images/logos/cartopy.jpeg\n",
+ ":alt: Cartopy logo\n",
+ ":width: 250px\n",
+ "```\n",
"\n",
- "Cartopy is a Python package for plotting data on the globe. It is the go-to package for plotting maps, dealing with different projections, and adding surface features to your plot. Cartopy is buit on top of [PROJ](https://proj.org/en/9.2/), NumPy and [Shapely](https://shapely.readthedocs.io/en/stable/manual.html), and Matplotlib. To learn more about what Cartopy can do, check out the [Cartopy documentation](https://scitools.org.uk/cartopy/docs/latest/) and the [Pythia foundations Cartopy chapter](https://foundations.projectpythia.org/core/cartopy.html).\n",
+ "Cartopy is a Python package for plotting data on the globe. It is the go-to package for plotting maps, dealing with different projections, and adding surface features to your plot. Cartopy is buit on top of [PROJ](https://proj.org/en/9.2/), NumPy, [Shapely](https://shapely.readthedocs.io/en/stable/manual.html), and Matplotlib. To learn more about what Cartopy can do, check out the [Cartopy documentation](https://scitools.org.uk/cartopy/docs/latest/) and the [Pythia Foundations Cartopy Chapter](https://foundations.projectpythia.org/core/cartopy.html).\n",
"\n",
"You may have heard about [Basemap](https://matplotlib.org/basemap/index.html), another geoscience plotting library, which was deprecated in favor of Cartopy.\n",
"\n",
@@ -122,9 +122,12 @@
"source": [
"## GeoCAT-Viz\n",
"\n",
- "\n",
+ "```{image} images/logos/geocat.png\n",
+ ":alt: GeoCAT logo\n",
+ ":width: 250px\n",
+ "```\n",
"\n",
- "The GeoCAT team at the National Center for Atmospheric Research (NCAR) aims to help scientists transitioning from [NCL](https://www.ncl.ucar.edu/) to Python. Out of this team come three different visualization aids: the [GeoCAT-examples Visualization Gallery](https://geocat-examples.readthedocs.io/en/latest/) which contains tons of different plotting examples that you can use as a starting place for your figures, [GeoCAT-applications](https://ncar.github.io/geocat-applications/) which is designed to be a quick reference guide demonstrating capabilities within the scientific Python ecosystem, and the [GeoCAT-Viz package (documentation)](https://geocat-viz.readthedocs.io/en/latest/) which contains many convenience functions that formerly existed in NCL or for making Python plots look publication-ready.\n",
+ "The GeoCAT team at the NSF National Center for Atmospheric Research (NSF NCAR) aims to help scientists transitioning from [NCL](https://www.ncl.ucar.edu/) to Python. Out of this team come three different visualization aids: the [GeoCAT-examples visualization gallery](https://geocat-examples.readthedocs.io/en/latest/) which contains tons of different plotting examples that you can use as a starting place for your figures, [GeoCAT-applications](https://ncar.github.io/geocat-applications/) which is designed to be a quick reference guide demonstrating capabilities within the scientific Python ecosystem, and the [GeoCAT-viz package (documentation)](https://geocat-viz.readthedocs.io/en/latest/) which contains many convenience functions that formerly existed in NCL and/or for making Python plots look publication-ready.\n",
"\n",
"Here is a simple example of a GeoCAT-viz convenience function:"
]
@@ -178,9 +181,12 @@
"source": [
"## MetPy\n",
"\n",
- "\n",
+ "```{image} images/logos/metpy.png\n",
+ ":alt: MetPy logo\n",
+ ":width: 250px\n",
+ "```\n",
"\n",
- "Metpy is a collection of tools for data reading, analysis, and visualization with weather data. Matplotlib offers some useful functionality for unique plots such as Skew-T diagrams, as well as declaritive plotting functionality. Check out the [MetPy documentation](https://unidata.github.io/MetPy/latest/index.html).\n",
+ "MetPy is a collection of tools for data I/O, analysis, and visualization with weather data. MetPy offers some useful functionality for unique plots such as Skew-T diagrams, as well as declaritive plotting functionality. Check out the [MetPy documentation](https://unidata.github.io/MetPy/latest/index.html).\n",
"\n",
"Here is a simple Skew-T plot from their [Getting Started documentation](https://unidata.github.io/MetPy/latest/userguide/startingguide.html):"
]
@@ -236,9 +242,12 @@
"source": [
"## VAPOR\n",
"\n",
- "\n",
+ "```{image} images/logos/vapor.png\n",
+ ":alt: VAPOR logo\n",
+ ":width: 250px\n",
+ "```\n",
"\n",
- "VAPOR stands for the Visualization and Analysis Platform for Ocean, Atmosphere, and Solar Researchers and is another project from NCAR. VAPOR provides an interactive 3D visualization environment. Learn more at the [VAPOR documentation](https://www.vapor.ucar.edu/). VAPOR requires a GPU-enabled environment to run."
+ "VAPOR stands for the Visualization and Analysis Platform for Ocean, Atmosphere, and Solar Researchers and is another project from NCAR. VAPOR provides an interactive 3D visualization environment. Traditionally users interacted through a graphical user interface (GUI), but it now has a Python API as well. Learn more at the [VAPOR documentation](https://www.vapor.ucar.edu/). Note that VAPOR requires a GPU-enabled environment to run."
]
},
{
@@ -255,14 +264,7 @@
"cell_type": "markdown",
"metadata": {},
"source": [
- "Interactive visualization libraries such as Plotly, UXarray, seaborn, bokeh, and hvplot will be explored in a separate interactive plotting Cookbook."
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "---"
+ "Interactive visualization libraries such as Plotly, Seaborn, Bokeh, and hvPlot will be explored in a separate interactive plotting cookbook."
]
},
{
@@ -287,10 +289,10 @@
"\n",
"- [Matplotlib documentation](https://matplotlib.org/)\n",
"- [Cartopy documentation](https://scitools.org.uk/cartopy/docs/latest/)\n",
- "- [GeoCat-examples Visualization Gallery](https://geocat-examples.readthedocs.io/en/latest/)\n",
- "- [GeoCAT-Viz documentation](https://geocat-viz.readthedocs.io/en/latest/)\n",
+ "- [GeoCAT-examples visualization gallery](https://geocat-examples.readthedocs.io/en/latest/)\n",
+ "- [GeoCAT-viz documentation](https://geocat-viz.readthedocs.io/en/latest/)\n",
"- [MetPy documentation](https://unidata.github.io/MetPy/latest/index.html)\n",
- "- [Vapor documentation](https://www.vapor.ucar.edu/)\n",
+ "- [VAPOR documentation](https://www.vapor.ucar.edu/)\n",
"- [Plotly Python documentation](https://plotly.com/python/)\n",
"- [Seaborn documentation](https://seaborn.pydata.org/)\n",
"- [Bokeh documentation](https://bokeh.org/)\n",
@@ -303,7 +305,7 @@
],
"metadata": {
"kernelspec": {
- "display_name": "advanced-viz-cookbook",
+ "display_name": "Python 3 (ipykernel)",
"language": "python",
"name": "python3"
},
@@ -317,7 +319,7 @@
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
- "version": "3.11.8"
+ "version": "3.12.8"
},
"nbdime-conflicts": {
"local_diff": [
diff --git a/notebooks/2-good-viz.ipynb b/notebooks/2-good-viz.ipynb
index 7cc6040..cd089f2 100644
--- a/notebooks/2-good-viz.ipynb
+++ b/notebooks/2-good-viz.ipynb
@@ -12,7 +12,7 @@
"metadata": {},
"source": [
"## Overview\n",
- "What Makes a Good Visualization? We want graphics to be eye catching and informative. In this chapter we'll discuss different aspects that can affect the quality of your figures and specific considerations relevant to the geosciences.\n",
+ "What makes a good visualization? We want graphics to be eye catching and informative. In this chapter we'll discuss different aspects that can affect the quality of your figures and specific considerations relevant to the geosciences.\n",
"\n",
"1. The Importance of Data Visualization\n",
"1. Publication Ready Figures\n",
@@ -31,7 +31,7 @@
"| [Matplotlib](https://foundations.projectpythia.org/core/matplotlib.html) | Necessary | |\n",
"| [Cartopy](https://foundations.projectpythia.org/core/cartopy.html) | Necessary | |\n",
"\n",
- "- **Time to learn**: 3 hours\n",
+ "- **Time to learn**: 10 minutes\n",
"---"
]
},
@@ -57,7 +57,9 @@
"\n",
"Here we have a figure from [Autodesk](https://www.research.autodesk.com/publications/same-stats-different-graphs/) that shows a \"Datasaurus\" and 12 other datasets that share the same statistical information (mean, standard deviation, etc). We can see immediately that visually are telling very different stories: be it a dinosaur, a star, an oval, concentric ovals, or a series of lines (perhaps weather fronts).\n",
"\n",
- ""
+ "```{image} images/same_stats.png\n",
+ ":alt: same stats\n",
+ "```"
]
},
{
@@ -66,7 +68,7 @@
"source": [
"## Publication Ready Figures\n",
"\n",
- "For your figure to be publication rady, you probably want to change some of Matplotlib's default plotting settings: selecting fontsizes for your titles and labels, changing figure sizes, or subplot/colormap layout.\n",
+ "For your figure to be publication ready, you probably want to change some of Matplotlib's default plotting settings: selecting font sizes for your titles and labels, changing figure sizes, or subplot/colormap layout.\n",
"\n",
"To demonstrate this, let's look at an example:"
]
@@ -126,7 +128,7 @@
"source": [
"### Matplotlib Global Parameters\n",
"\n",
- "Matplotlib has defaults for fontsizes and all sorts of attributes of a plot. Instead of setting your fontsize in every script, it is possible to set global parameters to change the default values of these attributes.\n",
+ "Matplotlib has defaults for font sizes and all sorts of attributes of a plot. Instead of setting your fontsize in every script, it is possible to set global parameters to change the default values of these attributes.\n",
"\n",
"You can veiw the globoal parameters options and their current settings with:"
]
@@ -160,9 +162,9 @@
"cell_type": "markdown",
"metadata": {},
"source": [
- "### Using GeoCAT-Viz\n",
+ "### Using GeoCAT-viz\n",
"\n",
- "The GeoCAT-Viz package also has many utility functions for making your plots looks publication ready in fewer lines of code. The defaults of GeoCAT-viz keword-arguments are set to resemble the style of NCL."
+ "The GeoCAT-viz package also has many utility functions for making your plots looks publication ready in fewer lines of code. The defaults of GeoCAT-viz keyword-arguments are set to resemble the style of NCL."
]
},
{
@@ -198,7 +200,7 @@
"1. They are not colorblind friendly and\n",
"2. They do not print out in grayscale in a meaningful way.\n",
"\n",
- "Both of these issues can be addressed by bing careful about you colormaps lightness-values.\n",
+ "Both of these issues can be addressed by being careful about your colormaps lightness-values.\n",
"\n",
"Some colormaps options are perceptually uniform (the same lightness value), sequentially ordered (goes from lighter to darker), or diverging (lightest or darkest at a set point and uniformly changes lightness going out). A rainbow colormap however is lighter or darker in arbitrary places and it affects how we interpret data (especially if it was printed out in grayscale).\n",
"\n",
@@ -212,7 +214,7 @@
"\n",
"Looking at the colors in grayscale helps to understand why we might prefer a sequentially ordered colormap. Some grayscale values are duplicated and the reader will not know if it is a high or low value.\n",
"\n",
- "Another consideration that can help those who are visually impaired is to make sure your figure comments are substantial. Use words to paint the picture of what is displayed, not just the conclusions you want the reader to get."
+ "Another consideration that can help those who are visually impaired is to make sure your figure captions are descriptive. Use words to paint a picture of what is displayed, not just the conclusions you want the reader to reach."
]
},
{
@@ -223,7 +225,7 @@
"\n",
"The scales or colors we choose to use for data visualization affect how people interpret figures. You should strive to make your visualizations as accurate and as informative as possible. Here are some examples that demonstrate just how different a figure can look based on these choices you make. Do not intentionally mislead your audience!\n",
"\n",
- "Perhaps the most common data visualization manipulation is to change the Y-scale. If a plot does not begin at 0, small changes in magnitude can be exhaggerated. Similarly a logarithmic scale will amplify changes. This is not always disingenuous, sometimes these changes are what you want to highlight, the pattern you want to draw attention to. Just make sure it is appropriate for your use case and documented. Alternatively, extending the Y-axis too large has the opposite affect and smooths out the differences in data."
+ "Perhaps the most common data visualization manipulation is to change the Y-scale. If a plot does not begin at 0, small changes in magnitude can be exaggerated. Similarly a logarithmic scale will amplify changes. This is not always disingenuous, sometimes these changes are what you want to highlight, the pattern you want to draw attention to. Just make sure it is appropriate for your use case and documented. Alternatively, extending the Y-axis too large has the opposite affect and smooths out the differences in data."
]
},
{
@@ -259,7 +261,7 @@
"cell_type": "markdown",
"metadata": {},
"source": [
- "Other examples of data visualization manipulation include improper scaling, cherry picking a small non-representative subset of the data to display, displaying pie charts at a slant (pie charts are hard to interpet accurately as is), and unusing unexpected colormaps."
+ "Other examples of data visualization manipulation include improper scaling, cherry picking a small non-representative subset of the data to display, displaying pie charts at a slant (pie charts are hard to interpet as is), and using unexpected colormaps."
]
},
{
@@ -274,7 +276,7 @@
"metadata": {},
"source": [
"## Summary\n",
- "It is important to have accurate, engaging, and representative data visualization to accumpany your research, both for data exploration as part of the scientific process, for communication of results, and education/outreach efforts. Visually we pick up on patterns that statistics alone may not convey. However, an over reliance on data visualization can make science less accessible to those with vision disabilities. It is important to be cognicent of the patterns our minds pick up, be it based on color or y-axis scaling, so that we can avoid misleading our audience and more accurately convey the narrative inherent to the data.\n",
+ "It is important to have accurate, engaging, and representative data visualization to accumpany your research, both for data exploration as part of the scientific process, for communication of results, and education/outreach efforts. Visually we pick up on patterns that statistics alone may not convey. However, an over reliance on data visualization can make science less accessible to those with vision disabilities. It is important to be cognizant of the patterns our minds pick up, be it based on color or y-axis scaling, so that we can avoid misleading our audience and more accurately convey the narrative inherent to the data.\n",
"\n",
"### What's next?\n",
"\n",
@@ -290,7 +292,7 @@
"- [Autodesk](https://www.research.autodesk.com/publications/same-stats-different-graphs/)\n",
"- [Matplotlib's Choosing a Colormap documentation](https://matplotlib.org/stable/tutorials/colors/colormaps.html)\n",
"- [GeoCAT-examples Gallery](https://geocat-examples.readthedocs.io/en/latest/)\n",
- "- [NWSC Script](https://docs.google.com/document/d/1PxJBbYJsI5nmR9pDQmcRM0ZghRPSI_xlzGVhw3AEUms/edit)\n",
+ "- [NWSC script](https://docs.google.com/document/d/1PxJBbYJsI5nmR9pDQmcRM0ZghRPSI_xlzGVhw3AEUms/edit)\n",
"- [Beyond Visuals: Examining the Experiences of Geoscience\n",
"Professionals With Vision Disabilities in Accessing Data Visualizations](https://ieeexplore.ieee.org/document/9973220)\n",
"- [Same Stats Different Graphs: Generating Datasets with Varied Appearance and\n",
@@ -302,7 +304,7 @@
],
"metadata": {
"kernelspec": {
- "display_name": "advanced-viz-cookbook",
+ "display_name": "Python 3 (ipykernel)",
"language": "python",
"name": "python3"
},
@@ -316,10 +318,9 @@
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
- "version": "3.11.8"
- },
- "orig_nbformat": 4
+ "version": "3.12.8"
+ }
},
"nbformat": 4,
- "nbformat_minor": 2
+ "nbformat_minor": 4
}
diff --git a/notebooks/3-plot-elements.ipynb b/notebooks/3-plot-elements.ipynb
index 27fec96..035d6ea 100644
--- a/notebooks/3-plot-elements.ipynb
+++ b/notebooks/3-plot-elements.ipynb
@@ -18,7 +18,7 @@
"| [Matplotlib](https://foundations.projectpythia.org/core/matplotlib.html) | Necessary | |\n",
"| [Cartopy](https://foundations.projectpythia.org/core/cartopy.html) | Necessary | |\n",
"\n",
- "- **Time to learn**: 40 minutes\n",
+ "- **Time to learn**: 10 minutes\n",
"---"
]
},
@@ -281,11 +281,18 @@
"source": [
"## Resources and references"
]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": []
}
],
"metadata": {
"kernelspec": {
- "display_name": "advanced-viz-cookbook",
+ "display_name": "Python 3 (ipykernel)",
"language": "python",
"name": "python3"
},
@@ -299,10 +306,9 @@
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
- "version": "3.10.12"
- },
- "orig_nbformat": 4
+ "version": "3.12.8"
+ }
},
"nbformat": 4,
- "nbformat_minor": 2
+ "nbformat_minor": 4
}
diff --git a/notebooks/4-taylor-diagrams.ipynb b/notebooks/4-taylor-diagrams.ipynb
index ec678ff..4d2554b 100644
--- a/notebooks/4-taylor-diagrams.ipynb
+++ b/notebooks/4-taylor-diagrams.ipynb
@@ -38,13 +38,7 @@
"| --- | --- | --- |\n",
"| [Matplotlib](https://foundations.projectpythia.org/core/matplotlib.html) | Necessary | |\n",
"\n",
- "- **Time to learn**: 10 minutes"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
+ "- **Time to learn**: 10 minutes\n",
"---"
]
},
@@ -71,7 +65,7 @@
"source": [
"## Creating a Simple Taylor Diagram\n",
"\n",
- "Before getting into the data computation necessary to create a Taylor diagram, let's demonstrate how to make the simplest Taylor Diagram plot. Here we are using sample data with a normalized standard deviation of 0.6 and a correlation coefficient of 0.24."
+ "Before getting into the data computation necessary to create a Taylor diagram, let's demonstrate how to make the simplest Taylor diagram plot. Here we are using sample data with a normalized standard deviation of 0.6 and a correlation coefficient of 0.24."
]
},
{
@@ -583,7 +577,7 @@
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
- "version": "3.10.12"
+ "version": "3.12.8"
}
},
"nbformat": 4,
diff --git a/notebooks/5-skewt.ipynb b/notebooks/5-skewt.ipynb
index cdda0bf..4d0cadb 100644
--- a/notebooks/5-skewt.ipynb
+++ b/notebooks/5-skewt.ipynb
@@ -33,13 +33,7 @@
"| [Matplotlib](https://foundations.projectpythia.org/core/matplotlib.html) | Necessary | |\n",
"| [Metpy](https://unidata.github.io/MetPy/latest/index.html) | Useful | |\n",
"\n",
- "- **Time to learn**: 10 minutes\n"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
+ "- **Time to learn**: 10 minutes\n",
"---"
]
},
@@ -52,7 +46,7 @@
"\n",
"1. **Temperature Lines** are drawn at an angle up from the x-axis and are where the name \"Skew-T\" comes from.\n",
"2. **Pressure Lines** are horizontal from the y-axis, where pressure is plotted at a logarithmic scale.\n",
- "3. **Dry Adiabats**: are lines of constant potential temperature as hypotethical air with no moisture content rises isentropically (with constant entropy).\n",
+ "3. **Dry Adiabats**: are lines of constant potential temperature as hypothetical air with no moisture content rises isentropically (with constant entropy).\n",
"4. **Moist Adiabats**: are lines of constant equivalent potential temperature - the change in temperature of fully saturated air as it rises, undergoing cooling due to adiabatic expansion.\n",
"5. **Mixing Ratio Lines**: represent lines of constant mixing ratio, the mass of water vapor relative to the mass of dry air.\n",
"\n",
@@ -375,7 +369,7 @@
],
"metadata": {
"kernelspec": {
- "display_name": "advanced-viz-cookbook",
+ "display_name": "Python 3 (ipykernel)",
"language": "python",
"name": "python3"
},
@@ -389,10 +383,9 @@
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
- "version": "3.10.12"
- },
- "orig_nbformat": 4
+ "version": "3.12.8"
+ }
},
"nbformat": 4,
- "nbformat_minor": 2
+ "nbformat_minor": 4
}
diff --git a/notebooks/6-spaghetti.ipynb b/notebooks/6-spaghetti.ipynb
index ed2e8c3..720c6dd 100644
--- a/notebooks/6-spaghetti.ipynb
+++ b/notebooks/6-spaghetti.ipynb
@@ -12,7 +12,7 @@
"metadata": {},
"source": [
"## Overview\n",
- "Spaghetti Plots are a tool typically used to visualize movement. Essentially they are many line plots displayed on the same axes. By drawing the same path at different times or from different forecasts, we can see the patterns and chaos associated with the plotted variable.\n",
+ "Spaghetti plots are a tool typically used to visualize movement. Essentially they are many line plots displayed on the same axes. By drawing the same path at different times or from different forecasts, we can see the patterns and chaos associated with the plotted variable.\n",
"\n",
"1. Spaghetti Hurricane Plot\n",
"1. Spaghetti Contour Plot\n"
@@ -29,13 +29,7 @@
"| [Matplotlib](https://foundations.projectpythia.org/core/matplotlib.html) | Necessary | |\n",
"| [Cartopy](https://foundations.projectpythia.org/core/cartopy.html) | Necessary | |\n",
"\n",
- "- **Time to learn**: 10 minutes"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
+ "- **Time to learn**: 10 minutes\n",
"---"
]
},
@@ -244,7 +238,7 @@
"cell_type": "markdown",
"metadata": {},
"source": [
- "This plot is a great example of a spaghetti plot, but is it super useful? Is it confusing? Each line looks like it carries the same weight, when some of these possible paths are from hours before Sandy hit the American NorthEast and others are from days before.\n",
+ "This plot is a great example of a spaghetti plot, but is it super useful? Is it confusing? Each line looks like it carries the same weight, when some of these possible paths are from hours before Sandy hit the Northeastern United States and others are from days before.\n",
"\n",
"Maybe it is better to show the user some indication of how the forecast for this ensemble converged on the true path with later and later initialization times."
]
@@ -394,7 +388,7 @@
"cell_type": "markdown",
"metadata": {},
"source": [
- "Hurricane Sandy hit the NorthEast on October 29, 2012. From this spaghetti plot we can see that by the 27th most ensemble members of the GFS forecast predicted a similar behavior for the storm.\n",
+ "Hurricane Sandy hit the Northeast on October 29, 2012. From this spaghetti plot we can see that by the 27th most ensemble members of the GFS forecast predicted a similar behavior for the storm.\n",
"\n",
"There is more analysis that could be done on hurriane trajectories. We have covered some plotting customization that might be useful for your analysis and data visualization."
]
@@ -898,7 +892,7 @@
"source": [
"## Summary\n",
"\n",
- "Spaghetti Plots are many lines drawn on the same figure. They have pros and cons. They are visually stunning but can be confusing, so it is important to make sure your data visualization conveys accurate information either by manipulating color or linewidth. Since the manipulation of spaghetti plots have their own considerations, this chapter shows several design choices that you can use to jumpstart your visualization needs.\n",
+ "Spaghetti plots are many lines drawn on the same figure. They have pros and cons. They are visually stunning but can be confusing, so it is important to make sure your data visualization conveys accurate information either by manipulating color or linewidth. Since the manipulation of spaghetti plots have their own considerations, this chapter shows several design choices that you can use to jumpstart your visualization needs.\n",
"\n",
"\n",
"### What's next?\n",
@@ -913,8 +907,8 @@
"## Resources and references\n",
"\n",
"- [Tropycal documentation](https://tropycal.github.io/tropycal/)\n",
- "- [GeoCat-examples Visualization Gallery](https://geocat-examples.readthedocs.io/en/latest/)\n",
- "- [GeoCAT-Viz documentation](https://geocat-viz.readthedocs.io/en/latest/)\n"
+ "- [GeoCat-examples visualization gallery](https://geocat-examples.readthedocs.io/en/latest/)\n",
+ "- [GeoCAT-viz documentation](https://geocat-viz.readthedocs.io/en/latest/)\n"
]
}
],
@@ -934,7 +928,7 @@
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
- "version": "3.10.12"
+ "version": "3.12.8"
}
},
"nbformat": 4,
diff --git a/notebooks/7-animation.ipynb b/notebooks/7-animation.ipynb
index 41e6f5d..373277b 100644
--- a/notebooks/7-animation.ipynb
+++ b/notebooks/7-animation.ipynb
@@ -33,13 +33,7 @@
"| [Matplotlib](https://foundations.projectpythia.org/core/matplotlib.html) | Necessary | |\n",
"| [Cartopy](https://foundations.projectpythia.org/core/cartopy.html) | Useful | Not necessary for animations in general, but useful for the examples in this notebook |\n",
"\n",
- "- **Time to learn**: 10 minutes"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
+ "- **Time to learn**: 10 minutes\n",
"---"
]
},
@@ -405,7 +399,11 @@
":::{warning}\n",
"You can accidentally create some funny looking animations if you forget the `add_colorbar = False` kwarg in the update function.\n",
"\n",
- "\n",
+ "```{image} images/animation_colorbar_oops.gif\n",
+ ":alt: colorbar oops\n",
+ ":width: 300px\n",
+ ":align: center\n",
+ "```\n",
":::"
]
},
@@ -506,7 +504,7 @@
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
- "version": "3.11.6"
+ "version": "3.12.8"
}
},
"nbformat": 4,