summaryrefslogtreecommitdiff
path: root/python-psychrochart.spec
diff options
context:
space:
mode:
Diffstat (limited to 'python-psychrochart.spec')
-rw-r--r--python-psychrochart.spec650
1 files changed, 650 insertions, 0 deletions
diff --git a/python-psychrochart.spec b/python-psychrochart.spec
new file mode 100644
index 0000000..f8f1ad4
--- /dev/null
+++ b/python-psychrochart.spec
@@ -0,0 +1,650 @@
+%global _empty_manifest_terminate_build 0
+Name: python-psychrochart
+Version: 0.9.1
+Release: 1
+Summary: A python 3 library to make psychrometric charts and overlay information on them
+License: MIT
+URL: https://github.com/azogue/psychrochart
+Source0: https://mirrors.aliyun.com/pypi/web/packages/90/a3/66e53b930dafdc8d25fbe787f63e60620f988df4cff25632c597818ad97d/psychrochart-0.9.1.tar.gz
+BuildArch: noarch
+
+Requires: python3-matplotlib
+Requires: python3-scipy
+Requires: python3-psychrolib
+Requires: python3-pydantic
+Requires: python3-slugify
+
+%description
+[![pre-commit.ci Status][pre-commit-ci-image]][pre-commit-ci-url]
+[![Build Status][build-image]][build-url]
+[![PyPI Version][pypi-image]][pypi-url]
+
+<!-- Badges -->
+
+[pre-commit-ci-image]: https://results.pre-commit.ci/badge/github/azogue/psychrochart/master.svg
+[pre-commit-ci-url]: https://results.pre-commit.ci/latest/github/azogue/psychrochart/master
+[build-image]: https://github.com/azogue/psychrochart/actions/workflows/main.yml/badge.svg
+[build-url]: https://github.com/azogue/psychrochart/actions/workflows/main.yml
+[pypi-image]: https://img.shields.io/pypi/v/psychrochart
+[pypi-url]: https://pypi.org/project/psychrochart/
+
+# Psychrochart
+
+A python 3 library to make **[psychrometric charts](https://en.wikipedia.org/wiki/Psychrometrics)** and overlay information on them.
+
+It implements a useful collection of psychrometric equations for moisture and humid air calculations, and the generation of beautiful and high customizable **psychrometric charts in SVG** with [`matplotlib`](https://matplotlib.org).
+
+**Psychrometric calculations to make the chart data are done with [`PsychroLib`](https://github.com/psychrometrics/psychrolib)** (summary paper in https://doi.org/10.21105/joss.01137).
+
+<img src="./tests/example-charts/chart_overlay_style_minimal.svg" width="100%" height="100%">
+
+## Install
+
+Get it **[from pypi](https://pypi.python.org/pypi?:action=display&name=psychrochart)** or **[clone it](https://github.com/azogue/psychrochart.git)** if you want to run the tests.
+
+```shell
+pip install psychrochart
+```
+
+## Features
+
+- **SI** units (with temperatures in celsius for better readability), with _partial_ compatibility with IP system (imperial units)
+- Easy style customization based on [**pydantic**](https://docs.pydantic.dev/latest/) models and config presets for full customization of **chart limits**, included lines and labels, colors, line styles, line widths, etc..
+- Psychrometric charts within temperature and humidity ratio ranges, for any pressure\*, with:
+ - **Saturation line**
+ - **Constant RH lines**
+ - **Constant enthalpy lines**
+ - **Constant wet-bulb temperature lines**
+ - **Constant specific volume lines**
+ - **Constant dry-bulb temperature lines** (internal orthogonal grid, vertical)
+ - **Constant humidity ratio lines** (internal orthogonal grid, horizontal)
+- Plot legend for each family of lines, labeled zones and annotations
+- Specify labels for each family of lines
+- Overlay points, arrows, **data-series** (numpy arrays or pandas series), and convex hulls around points
+- Define multiple kinds of **zones limited by psychrometric values**:
+ - 'dbt-rh' for areas between dry-bulb temperature and relative humidity values,
+ - 'enthalpy-rh' for areas between constant enthalpy and relative humidity values
+ - 'volume-rh' for areas between constant volume and relative humidity values
+ - 'dbt-wmax' for an area between dry-bulb temperature and water vapor content values (:= a rectangle cut by the saturation line),
+ - 'xy-points' to define arbitrary closed paths in plot coordinates (dbt, abs humidity)
+- **Export as SVG, PNG files**, or generate dynamic SVGs with extra CSS and <defs> with `chart.make_svg(...)`
+
+> NOTE: The ranges of temperature, humidity and pressure where this library should provide good results are within the normal environments for people to live in.
+>
+> Don't expect right results if doing other type of thermodynamic calculations.
+>
+> ⚠️ **Over saturated water vapor states are not implemented**. This library is intended for HVAC applications only ⚠️
+
+## Usage
+
+```python
+from psychrochart import PsychroChart
+
+# Load default style:
+chart_default = PsychroChart.create()
+# customize anything
+chart_default.limits.range_temp_c = (15.0, 35.0)
+chart_default.limits.range_humidity_g_kg = (5, 25)
+chart_default.config.saturation.linewidth = 1
+chart_default.config.constant_wet_temp.color = "darkblue"
+# plot
+axes = chart_default.plot()
+axes.get_figure()
+# or store on disk
+chart_default.save("my-custom-chart.svg")
+```
+
+Called from the terminal (`python psychrochart`), it plots and shows the default chart using the default matplotlib backend, equivalent to this python script:
+
+```python
+from psychrochart import PsychroChart
+import matplotlib.pyplot as plt
+
+PsychroChart.create().plot(ax=plt.gca())
+plt.show()
+```
+
+### Chart customization
+
+The default styling for charts is defined in JSON files that you can change, or you can pass a path of a file in JSON, or a dict, when you create the psychrometric chart object.
+Included styles are: `default`, `ashrae`, `ashrae_ip` (adjusted for IP units), `interior`, and `minimal`.
+
+```python
+from pathlib import Path
+from psychrochart import load_config, PsychroChart
+
+# Load preconfigured styles:
+chart_ashrae_style = PsychroChart.create('ashrae')
+chart_ashrae_style.plot()
+
+chart_minimal = PsychroChart.create('minimal')
+chart_minimal.plot()
+
+# Get a preconfigured style model and customize it
+chart_config = load_config('interior')
+chart_config.limits.range_temp_c = (18.0, 32.0)
+chart_config.limits.range_humidity_g_kg = (1.0, 40.0)
+chart_config.limits.altitude_m = 3000
+
+custom_chart = PsychroChart.create(chart_config)
+custom_chart.save("custom-chart.svg")
+
+# serialize the config for future uses
+assert chart_config.json() == custom_chart.config.json()
+Path('path/to/chart_config_file.json').write_text(chart_config.json())
+custom_chart_bis = PsychroChart.create('path/to/chart_config_file.json')
+# or even the full psychrochart
+Path('path/to/chart_file.json').write_text(custom_chart.json())
+custom_chart_bis_2 = PsychroChart.parse_file('path/to/chart_file.json')
+
+# Specify the styles JSON file:
+chart_custom = PsychroChart.create('/path/to/json_file.json')
+chart_custom.plot()
+
+# Pass a dict with the changes wanted:
+custom_style = {
+ "figure": {
+ "figsize": [12, 8],
+ "base_fontsize": 12,
+ "title": "My chart",
+ "x_label": None,
+ "y_label": None,
+ "partial_axis": False
+ },
+ "limits": {
+ "range_temp_c": [15, 30],
+ "range_humidity_g_kg": [0, 25],
+ "altitude_m": 900,
+ "step_temp": .5
+ },
+ "saturation": {"color": [0, .3, 1.], "linewidth": 2},
+ "constant_rh": {"color": [0.0, 0.498, 1.0, .7], "linewidth": 2.5,
+ "linestyle": ":"},
+ "chart_params": {
+ "with_constant_rh": True,
+ "constant_rh_curves": [25, 50, 75],
+ "constant_rh_labels": [25, 50, 75],
+ "with_constant_v": False,
+ "with_constant_h": False,
+ "with_constant_wet_temp": False,
+ "with_zones": False
+ }
+}
+
+chart_custom_2 = PsychroChart.create(custom_style)
+chart_custom_2.plot()
+```
+
+The custom configuration does not need to include all fields, but only the fields you want to change.
+
+To play with it and see the results, look at this **[notebook with usage examples](https://github.com/azogue/psychrochart/blob/master/notebooks/Usage%20example%20of%20psychrochart.ipynb)**.
+
+## Development and testing
+
+To run the tests, clone the repository, `poetry install` it, and run `poetry run pytest`.
+
+Run `poetry run pre-commit run --all-files` to apply linters for changes in the code 😜.
+
+## License
+
+[MIT license](https://github.com/azogue/psychrochart/blob/master/LICENSE), so do with it as you like ;-)
+
+## Included styling examples
+
+**Default style**:
+
+<img src="./tests/example-charts/test_default_psychrochart.svg" width="100%" height="100%">
+
+**ASHRAE Handbook black and white style**: (preset: `ashrae`)
+
+<img src="./tests/example-charts/test_ashrae_psychrochart.svg" width="100%" height="100%">
+
+**ASHRAE Handbook black and white style (IP units)**: (preset: `ashrae_ip`)
+
+<img src="./tests/example-charts/test_ashrae_psychrochart_ip.svg" width="100%" height="100%">
+
+**Minimal style**: (preset: `minimal`)
+
+<img src="./tests/example-charts/test_minimal_psychrochart.svg" width="100%" height="100%">
+
+
+%package -n python3-psychrochart
+Summary: A python 3 library to make psychrometric charts and overlay information on them
+Provides: python-psychrochart
+BuildRequires: python3-devel
+BuildRequires: python3-setuptools
+BuildRequires: python3-pip
+%description -n python3-psychrochart
+[![pre-commit.ci Status][pre-commit-ci-image]][pre-commit-ci-url]
+[![Build Status][build-image]][build-url]
+[![PyPI Version][pypi-image]][pypi-url]
+
+<!-- Badges -->
+
+[pre-commit-ci-image]: https://results.pre-commit.ci/badge/github/azogue/psychrochart/master.svg
+[pre-commit-ci-url]: https://results.pre-commit.ci/latest/github/azogue/psychrochart/master
+[build-image]: https://github.com/azogue/psychrochart/actions/workflows/main.yml/badge.svg
+[build-url]: https://github.com/azogue/psychrochart/actions/workflows/main.yml
+[pypi-image]: https://img.shields.io/pypi/v/psychrochart
+[pypi-url]: https://pypi.org/project/psychrochart/
+
+# Psychrochart
+
+A python 3 library to make **[psychrometric charts](https://en.wikipedia.org/wiki/Psychrometrics)** and overlay information on them.
+
+It implements a useful collection of psychrometric equations for moisture and humid air calculations, and the generation of beautiful and high customizable **psychrometric charts in SVG** with [`matplotlib`](https://matplotlib.org).
+
+**Psychrometric calculations to make the chart data are done with [`PsychroLib`](https://github.com/psychrometrics/psychrolib)** (summary paper in https://doi.org/10.21105/joss.01137).
+
+<img src="./tests/example-charts/chart_overlay_style_minimal.svg" width="100%" height="100%">
+
+## Install
+
+Get it **[from pypi](https://pypi.python.org/pypi?:action=display&name=psychrochart)** or **[clone it](https://github.com/azogue/psychrochart.git)** if you want to run the tests.
+
+```shell
+pip install psychrochart
+```
+
+## Features
+
+- **SI** units (with temperatures in celsius for better readability), with _partial_ compatibility with IP system (imperial units)
+- Easy style customization based on [**pydantic**](https://docs.pydantic.dev/latest/) models and config presets for full customization of **chart limits**, included lines and labels, colors, line styles, line widths, etc..
+- Psychrometric charts within temperature and humidity ratio ranges, for any pressure\*, with:
+ - **Saturation line**
+ - **Constant RH lines**
+ - **Constant enthalpy lines**
+ - **Constant wet-bulb temperature lines**
+ - **Constant specific volume lines**
+ - **Constant dry-bulb temperature lines** (internal orthogonal grid, vertical)
+ - **Constant humidity ratio lines** (internal orthogonal grid, horizontal)
+- Plot legend for each family of lines, labeled zones and annotations
+- Specify labels for each family of lines
+- Overlay points, arrows, **data-series** (numpy arrays or pandas series), and convex hulls around points
+- Define multiple kinds of **zones limited by psychrometric values**:
+ - 'dbt-rh' for areas between dry-bulb temperature and relative humidity values,
+ - 'enthalpy-rh' for areas between constant enthalpy and relative humidity values
+ - 'volume-rh' for areas between constant volume and relative humidity values
+ - 'dbt-wmax' for an area between dry-bulb temperature and water vapor content values (:= a rectangle cut by the saturation line),
+ - 'xy-points' to define arbitrary closed paths in plot coordinates (dbt, abs humidity)
+- **Export as SVG, PNG files**, or generate dynamic SVGs with extra CSS and <defs> with `chart.make_svg(...)`
+
+> NOTE: The ranges of temperature, humidity and pressure where this library should provide good results are within the normal environments for people to live in.
+>
+> Don't expect right results if doing other type of thermodynamic calculations.
+>
+> ⚠️ **Over saturated water vapor states are not implemented**. This library is intended for HVAC applications only ⚠️
+
+## Usage
+
+```python
+from psychrochart import PsychroChart
+
+# Load default style:
+chart_default = PsychroChart.create()
+# customize anything
+chart_default.limits.range_temp_c = (15.0, 35.0)
+chart_default.limits.range_humidity_g_kg = (5, 25)
+chart_default.config.saturation.linewidth = 1
+chart_default.config.constant_wet_temp.color = "darkblue"
+# plot
+axes = chart_default.plot()
+axes.get_figure()
+# or store on disk
+chart_default.save("my-custom-chart.svg")
+```
+
+Called from the terminal (`python psychrochart`), it plots and shows the default chart using the default matplotlib backend, equivalent to this python script:
+
+```python
+from psychrochart import PsychroChart
+import matplotlib.pyplot as plt
+
+PsychroChart.create().plot(ax=plt.gca())
+plt.show()
+```
+
+### Chart customization
+
+The default styling for charts is defined in JSON files that you can change, or you can pass a path of a file in JSON, or a dict, when you create the psychrometric chart object.
+Included styles are: `default`, `ashrae`, `ashrae_ip` (adjusted for IP units), `interior`, and `minimal`.
+
+```python
+from pathlib import Path
+from psychrochart import load_config, PsychroChart
+
+# Load preconfigured styles:
+chart_ashrae_style = PsychroChart.create('ashrae')
+chart_ashrae_style.plot()
+
+chart_minimal = PsychroChart.create('minimal')
+chart_minimal.plot()
+
+# Get a preconfigured style model and customize it
+chart_config = load_config('interior')
+chart_config.limits.range_temp_c = (18.0, 32.0)
+chart_config.limits.range_humidity_g_kg = (1.0, 40.0)
+chart_config.limits.altitude_m = 3000
+
+custom_chart = PsychroChart.create(chart_config)
+custom_chart.save("custom-chart.svg")
+
+# serialize the config for future uses
+assert chart_config.json() == custom_chart.config.json()
+Path('path/to/chart_config_file.json').write_text(chart_config.json())
+custom_chart_bis = PsychroChart.create('path/to/chart_config_file.json')
+# or even the full psychrochart
+Path('path/to/chart_file.json').write_text(custom_chart.json())
+custom_chart_bis_2 = PsychroChart.parse_file('path/to/chart_file.json')
+
+# Specify the styles JSON file:
+chart_custom = PsychroChart.create('/path/to/json_file.json')
+chart_custom.plot()
+
+# Pass a dict with the changes wanted:
+custom_style = {
+ "figure": {
+ "figsize": [12, 8],
+ "base_fontsize": 12,
+ "title": "My chart",
+ "x_label": None,
+ "y_label": None,
+ "partial_axis": False
+ },
+ "limits": {
+ "range_temp_c": [15, 30],
+ "range_humidity_g_kg": [0, 25],
+ "altitude_m": 900,
+ "step_temp": .5
+ },
+ "saturation": {"color": [0, .3, 1.], "linewidth": 2},
+ "constant_rh": {"color": [0.0, 0.498, 1.0, .7], "linewidth": 2.5,
+ "linestyle": ":"},
+ "chart_params": {
+ "with_constant_rh": True,
+ "constant_rh_curves": [25, 50, 75],
+ "constant_rh_labels": [25, 50, 75],
+ "with_constant_v": False,
+ "with_constant_h": False,
+ "with_constant_wet_temp": False,
+ "with_zones": False
+ }
+}
+
+chart_custom_2 = PsychroChart.create(custom_style)
+chart_custom_2.plot()
+```
+
+The custom configuration does not need to include all fields, but only the fields you want to change.
+
+To play with it and see the results, look at this **[notebook with usage examples](https://github.com/azogue/psychrochart/blob/master/notebooks/Usage%20example%20of%20psychrochart.ipynb)**.
+
+## Development and testing
+
+To run the tests, clone the repository, `poetry install` it, and run `poetry run pytest`.
+
+Run `poetry run pre-commit run --all-files` to apply linters for changes in the code 😜.
+
+## License
+
+[MIT license](https://github.com/azogue/psychrochart/blob/master/LICENSE), so do with it as you like ;-)
+
+## Included styling examples
+
+**Default style**:
+
+<img src="./tests/example-charts/test_default_psychrochart.svg" width="100%" height="100%">
+
+**ASHRAE Handbook black and white style**: (preset: `ashrae`)
+
+<img src="./tests/example-charts/test_ashrae_psychrochart.svg" width="100%" height="100%">
+
+**ASHRAE Handbook black and white style (IP units)**: (preset: `ashrae_ip`)
+
+<img src="./tests/example-charts/test_ashrae_psychrochart_ip.svg" width="100%" height="100%">
+
+**Minimal style**: (preset: `minimal`)
+
+<img src="./tests/example-charts/test_minimal_psychrochart.svg" width="100%" height="100%">
+
+
+%package help
+Summary: Development documents and examples for psychrochart
+Provides: python3-psychrochart-doc
+%description help
+[![pre-commit.ci Status][pre-commit-ci-image]][pre-commit-ci-url]
+[![Build Status][build-image]][build-url]
+[![PyPI Version][pypi-image]][pypi-url]
+
+<!-- Badges -->
+
+[pre-commit-ci-image]: https://results.pre-commit.ci/badge/github/azogue/psychrochart/master.svg
+[pre-commit-ci-url]: https://results.pre-commit.ci/latest/github/azogue/psychrochart/master
+[build-image]: https://github.com/azogue/psychrochart/actions/workflows/main.yml/badge.svg
+[build-url]: https://github.com/azogue/psychrochart/actions/workflows/main.yml
+[pypi-image]: https://img.shields.io/pypi/v/psychrochart
+[pypi-url]: https://pypi.org/project/psychrochart/
+
+# Psychrochart
+
+A python 3 library to make **[psychrometric charts](https://en.wikipedia.org/wiki/Psychrometrics)** and overlay information on them.
+
+It implements a useful collection of psychrometric equations for moisture and humid air calculations, and the generation of beautiful and high customizable **psychrometric charts in SVG** with [`matplotlib`](https://matplotlib.org).
+
+**Psychrometric calculations to make the chart data are done with [`PsychroLib`](https://github.com/psychrometrics/psychrolib)** (summary paper in https://doi.org/10.21105/joss.01137).
+
+<img src="./tests/example-charts/chart_overlay_style_minimal.svg" width="100%" height="100%">
+
+## Install
+
+Get it **[from pypi](https://pypi.python.org/pypi?:action=display&name=psychrochart)** or **[clone it](https://github.com/azogue/psychrochart.git)** if you want to run the tests.
+
+```shell
+pip install psychrochart
+```
+
+## Features
+
+- **SI** units (with temperatures in celsius for better readability), with _partial_ compatibility with IP system (imperial units)
+- Easy style customization based on [**pydantic**](https://docs.pydantic.dev/latest/) models and config presets for full customization of **chart limits**, included lines and labels, colors, line styles, line widths, etc..
+- Psychrometric charts within temperature and humidity ratio ranges, for any pressure\*, with:
+ - **Saturation line**
+ - **Constant RH lines**
+ - **Constant enthalpy lines**
+ - **Constant wet-bulb temperature lines**
+ - **Constant specific volume lines**
+ - **Constant dry-bulb temperature lines** (internal orthogonal grid, vertical)
+ - **Constant humidity ratio lines** (internal orthogonal grid, horizontal)
+- Plot legend for each family of lines, labeled zones and annotations
+- Specify labels for each family of lines
+- Overlay points, arrows, **data-series** (numpy arrays or pandas series), and convex hulls around points
+- Define multiple kinds of **zones limited by psychrometric values**:
+ - 'dbt-rh' for areas between dry-bulb temperature and relative humidity values,
+ - 'enthalpy-rh' for areas between constant enthalpy and relative humidity values
+ - 'volume-rh' for areas between constant volume and relative humidity values
+ - 'dbt-wmax' for an area between dry-bulb temperature and water vapor content values (:= a rectangle cut by the saturation line),
+ - 'xy-points' to define arbitrary closed paths in plot coordinates (dbt, abs humidity)
+- **Export as SVG, PNG files**, or generate dynamic SVGs with extra CSS and <defs> with `chart.make_svg(...)`
+
+> NOTE: The ranges of temperature, humidity and pressure where this library should provide good results are within the normal environments for people to live in.
+>
+> Don't expect right results if doing other type of thermodynamic calculations.
+>
+> ⚠️ **Over saturated water vapor states are not implemented**. This library is intended for HVAC applications only ⚠️
+
+## Usage
+
+```python
+from psychrochart import PsychroChart
+
+# Load default style:
+chart_default = PsychroChart.create()
+# customize anything
+chart_default.limits.range_temp_c = (15.0, 35.0)
+chart_default.limits.range_humidity_g_kg = (5, 25)
+chart_default.config.saturation.linewidth = 1
+chart_default.config.constant_wet_temp.color = "darkblue"
+# plot
+axes = chart_default.plot()
+axes.get_figure()
+# or store on disk
+chart_default.save("my-custom-chart.svg")
+```
+
+Called from the terminal (`python psychrochart`), it plots and shows the default chart using the default matplotlib backend, equivalent to this python script:
+
+```python
+from psychrochart import PsychroChart
+import matplotlib.pyplot as plt
+
+PsychroChart.create().plot(ax=plt.gca())
+plt.show()
+```
+
+### Chart customization
+
+The default styling for charts is defined in JSON files that you can change, or you can pass a path of a file in JSON, or a dict, when you create the psychrometric chart object.
+Included styles are: `default`, `ashrae`, `ashrae_ip` (adjusted for IP units), `interior`, and `minimal`.
+
+```python
+from pathlib import Path
+from psychrochart import load_config, PsychroChart
+
+# Load preconfigured styles:
+chart_ashrae_style = PsychroChart.create('ashrae')
+chart_ashrae_style.plot()
+
+chart_minimal = PsychroChart.create('minimal')
+chart_minimal.plot()
+
+# Get a preconfigured style model and customize it
+chart_config = load_config('interior')
+chart_config.limits.range_temp_c = (18.0, 32.0)
+chart_config.limits.range_humidity_g_kg = (1.0, 40.0)
+chart_config.limits.altitude_m = 3000
+
+custom_chart = PsychroChart.create(chart_config)
+custom_chart.save("custom-chart.svg")
+
+# serialize the config for future uses
+assert chart_config.json() == custom_chart.config.json()
+Path('path/to/chart_config_file.json').write_text(chart_config.json())
+custom_chart_bis = PsychroChart.create('path/to/chart_config_file.json')
+# or even the full psychrochart
+Path('path/to/chart_file.json').write_text(custom_chart.json())
+custom_chart_bis_2 = PsychroChart.parse_file('path/to/chart_file.json')
+
+# Specify the styles JSON file:
+chart_custom = PsychroChart.create('/path/to/json_file.json')
+chart_custom.plot()
+
+# Pass a dict with the changes wanted:
+custom_style = {
+ "figure": {
+ "figsize": [12, 8],
+ "base_fontsize": 12,
+ "title": "My chart",
+ "x_label": None,
+ "y_label": None,
+ "partial_axis": False
+ },
+ "limits": {
+ "range_temp_c": [15, 30],
+ "range_humidity_g_kg": [0, 25],
+ "altitude_m": 900,
+ "step_temp": .5
+ },
+ "saturation": {"color": [0, .3, 1.], "linewidth": 2},
+ "constant_rh": {"color": [0.0, 0.498, 1.0, .7], "linewidth": 2.5,
+ "linestyle": ":"},
+ "chart_params": {
+ "with_constant_rh": True,
+ "constant_rh_curves": [25, 50, 75],
+ "constant_rh_labels": [25, 50, 75],
+ "with_constant_v": False,
+ "with_constant_h": False,
+ "with_constant_wet_temp": False,
+ "with_zones": False
+ }
+}
+
+chart_custom_2 = PsychroChart.create(custom_style)
+chart_custom_2.plot()
+```
+
+The custom configuration does not need to include all fields, but only the fields you want to change.
+
+To play with it and see the results, look at this **[notebook with usage examples](https://github.com/azogue/psychrochart/blob/master/notebooks/Usage%20example%20of%20psychrochart.ipynb)**.
+
+## Development and testing
+
+To run the tests, clone the repository, `poetry install` it, and run `poetry run pytest`.
+
+Run `poetry run pre-commit run --all-files` to apply linters for changes in the code 😜.
+
+## License
+
+[MIT license](https://github.com/azogue/psychrochart/blob/master/LICENSE), so do with it as you like ;-)
+
+## Included styling examples
+
+**Default style**:
+
+<img src="./tests/example-charts/test_default_psychrochart.svg" width="100%" height="100%">
+
+**ASHRAE Handbook black and white style**: (preset: `ashrae`)
+
+<img src="./tests/example-charts/test_ashrae_psychrochart.svg" width="100%" height="100%">
+
+**ASHRAE Handbook black and white style (IP units)**: (preset: `ashrae_ip`)
+
+<img src="./tests/example-charts/test_ashrae_psychrochart_ip.svg" width="100%" height="100%">
+
+**Minimal style**: (preset: `minimal`)
+
+<img src="./tests/example-charts/test_minimal_psychrochart.svg" width="100%" height="100%">
+
+
+%prep
+%autosetup -n psychrochart-0.9.1
+
+%build
+%py3_build
+
+%install
+%py3_install
+install -d -m755 %{buildroot}/%{_pkgdocdir}
+if [ -d doc ]; then cp -arf doc %{buildroot}/%{_pkgdocdir}; fi
+if [ -d docs ]; then cp -arf docs %{buildroot}/%{_pkgdocdir}; fi
+if [ -d example ]; then cp -arf example %{buildroot}/%{_pkgdocdir}; fi
+if [ -d examples ]; then cp -arf examples %{buildroot}/%{_pkgdocdir}; fi
+pushd %{buildroot}
+if [ -d usr/lib ]; then
+ find usr/lib -type f -printf "\"/%h/%f\"\n" >> filelist.lst
+fi
+if [ -d usr/lib64 ]; then
+ find usr/lib64 -type f -printf "\"/%h/%f\"\n" >> filelist.lst
+fi
+if [ -d usr/bin ]; then
+ find usr/bin -type f -printf "\"/%h/%f\"\n" >> filelist.lst
+fi
+if [ -d usr/sbin ]; then
+ find usr/sbin -type f -printf "\"/%h/%f\"\n" >> filelist.lst
+fi
+touch doclist.lst
+if [ -d usr/share/man ]; then
+ find usr/share/man -type f -printf "\"/%h/%f.gz\"\n" >> doclist.lst
+fi
+popd
+mv %{buildroot}/filelist.lst .
+mv %{buildroot}/doclist.lst .
+
+%files -n python3-psychrochart -f filelist.lst
+%dir %{python3_sitelib}/*
+
+%files help -f doclist.lst
+%{_docdir}/*
+
+%changelog
+* Tue Jun 20 2023 Python_Bot <Python_Bot@openeuler.org> - 0.9.1-1
+- Package Spec generated