Как применить пунктирность к контурным графикам в Python?Python

Программы на Python
Ответить
Anonymous
 Как применить пунктирность к контурным графикам в Python?

Сообщение Anonymous »

Я хочу добавить пунктирность к данным Xarray DataArray, чтобы указать их значимость. Данные представляют собой 2D климатические данные в широтно-долгой сетке. Я хочу предоставить маску True/False для построения графика сопоставленных переменных данных. Я пытаюсь использовать для этой цели shapef, но я открыт для других методов, если они более подходят.
Я пытался использовать штриховку контура, чтобы нанести штриховку на важные области, но пунктирные точки покрыть всю площадь участка. Когда я добавляю контурf с маской и штриховками, значения 0 и 1 также отображаются сплошным цветом, скрывая переменные данные, которые я хочу визуализировать.
Я нашел Документация по штриховке MATLAB и аналогичный вопрос для R «добавление штриховки к контурному графику изображения».
Этот вопрос может быть похожим. Как следует из ответа на этот вопрос, я попытался предоставить уровни, но это не решило мою проблему.
Ниже приведен наглядный пример моей проблемы.
Желаемым результатом будет левый контурный график с пунктирными точками только там, где маска имеет значение True.
Правый график показывает мою попытку. Вы можете видеть, что штриховки расположены по всему графику, независимо от маски, а значения маски скрывают значения DataArray.

Код: Выделить всё

import matplotlib.pyplot as plt
import numpy as np
import xarray as xr

def f(x, y):
return np.sin(x) ** 10 + np.cos(10 + y * x) * np.cos(x)

x = np.linspace(0, 5, 51)
y = np.linspace(0, 5, 41)

X, Y = np.meshgrid(x, y)
Z = f(X, Y)

da = xr.DataArray(Z, coords = {"lon":x, "lat":y}, dims=["lat", "lon"])

fig =plt.figure(figsize=(12, 6))
ax1 = plt.subplot(121)
ax2 = plt.subplot(122)

ax1.contourf(da.lon, da.lat, da)

mask = da>0.5
ax2.contourf(da.lon, da.lat, da)
ax2.contourf(da.lon, da.lat, mask, hatches=["."])
Изображение


Подробнее здесь: https://stackoverflow.com/questions/787 ... -in-python
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»