Makes informative labels if variable metadata (attrs) follows CF conventions.
(da: DataArray | None, extra: str = "")
| 531 | |
| 532 | |
| 533 | def label_from_attrs(da: DataArray | None, extra: str = "") -> str: |
| 534 | """Makes informative labels if variable metadata (attrs) follows |
| 535 | CF conventions.""" |
| 536 | if da is None: |
| 537 | return "" |
| 538 | |
| 539 | name: str = "{}" |
| 540 | if "long_name" in da.attrs: |
| 541 | name = name.format(da.attrs["long_name"]) |
| 542 | elif "standard_name" in da.attrs: |
| 543 | name = name.format(da.attrs["standard_name"]) |
| 544 | elif da.name is not None: |
| 545 | name = name.format(da.name) |
| 546 | else: |
| 547 | name = "" |
| 548 | |
| 549 | units = _get_units_from_attrs(da) |
| 550 | |
| 551 | # Treat `name` differently if it's a latex sequence |
| 552 | if name.startswith("$") and (name.count("$") % 2 == 0): |
| 553 | return "$\n$".join( |
| 554 | textwrap.wrap(name + extra + units, 60, break_long_words=False) |
| 555 | ) |
| 556 | else: |
| 557 | return "\n".join(textwrap.wrap(name + extra + units, 30)) |
| 558 | |
| 559 | |
| 560 | def _interval_to_mid_points(array: Iterable[pd.Interval]) -> np.ndarray: |
searching dependent graphs…