вот мой вопрос
Извините за сумбурное выражение.
Просто проверьте мое обновление. Это более ясно.
1. Введение
- Трехмерный массив data в форме (10, 31, 37).
- Первое измерение 10 - это количество двумерных массивов.
- Последние 2 массива представляют некоторое значение сетки двумерной области со значением 0 и 1.
Это выглядит так:
### mask the value 0 of data[1,:,:]
data_mask = np.ma.masked_less(data[[1,:,:],0.001)
pc =plt.pcolor(xx,yy,data_mask[i,:,:],alpha =1,facecolor = "pink",edgecolor = 'steelblue',zorder =3)
## plotting the grid line
mesh =plt.pcolor(xx,yy,data[1,:,:],cmap="gray",alpha =0.45,facecolor = "none",edgecolor = 'k')
(источник: tietuku.com)
2. Моя попытка
- Построение каждого двумерного массива разным цветом на одной фигуре
- Если возможно нарисовать часть поперечного сечения другим цветом (например, диаграмма Венна) или типом заливки (штриховка), :
(источник: tietuku.com а>)
3. Мой код
Например, два двумерных массива.
(источник: tietuku.com)
cs=plt.cm.jet(np.arange(2)/2.)
for i in range(0,2,1):
data_mask = np.ma.masked_less(data[i,:,:],0.001)
plt.pcolor(xx,yy, data_mask[i,:,:],alpha =0.95,facecolor = cs[i],edgecolor = 'k',zorder =3)
результат
(источник: tietuku.com)
На этих рисунках всем казалось, что настройка цвета была неправильной.
4. Мой вопрос
- Как установить цвет сетки pcolor? В моем примере использование
facecolor =
не сработало. И я знаю, что использованиеcmap = plt.cm.xxx
работает (рисунок ниже). Но я должен построить эти два двумерных массива отдельно.
(источник: tietuku.com а>)
- Как я сказал в разделе 'Моя попытка 2', есть ли способ засвидетельствовать перекрытие и пометить эту сетку каким-то умным способом.
Что я могу понять, так это создать еще один np.array с именем «перекрытие» и сохранить информацию о каждой сетке.
for i in range(0,data.shape[1],1):
for j in range(0,dat.shape[2],1):
if (data[0,i,j] == 1) & (data[1,i,j] == 1.0):
overlap[i,j] = 1
При наличии более двух двумерных массивов этот метод не справлялся.
Обновление -2016-01-17
Я суммирую свой вопрос в одну цифру с кодом, который его генерирует:
cover_mask = np.ma.masked_less(data[0,:,:],0.001)
plt.pcolor(xx,yy,data_mask[0,:,:],cmap = plt.cm.Set1,alpha =0.75,\
edgecolor = 'k',zorder =3)
cover_mask = np.ma.masked_less(cov[1,:,:],0.001)
plt.pcolor(xx,yy,cover_mask[1,:,:],cmap = plt.cm.Set2,alpha =0.75,\
edgecolor = 'k',zorder =3)
http://i4.tietuku.com/1d47a3410417cd4f.png
Мой вопрос
В приведенном выше коде я рисую двумерные массивы отдельно. Если цвет сетки можно установить с помощью
facecolor = 'cs[i]'
сcs=plt.cm.xxx(np.arange(2)/2.)
, я могу зациклить все свои данные[0:10,:,:]. Но я могу использовать толькоcmap = xxx
, чтобы различать цвет каждого массива. Я не знаю, как зациклить палитру.На картинке выше красные сетки и зеленые сетки перекрываются. Для лучшего эффекта визуализации я хочу пометить эти перекрывающиеся сетки зачеркнутыми.
Идея 1
- каждая двумерная сетка имеет разные цвета, и все перекрывающиеся области имеют один и тот же цвет (в моем случае требуется 11 цветов)
Идея 2
пометьте перекрывающуюся сетку знаком «X» или чем-то подобным, как показано на рисунке ниже.
(источник: tietuku.com а>)
Добавлять
Основываясь на этом сообщении, кажется, что "pcolor/pcolormesh" не имеет функция настройки hatch = '* '
.