Графическое изображение только верхнего/ниже треугольника heatmap

В maptplotlib можно создать heatmap представление корреляционной матрицы с помощью функции imshow. По определению такая матрица симметрична вокруг своей основной диагонали, поэтому нет никакой потребности представить обоих верхние и более низкие треугольники. Например: correlation matrix

Вышеупомянутый пример был взят от этого сайта, К сожалению, я не мог выяснить, как сделать это в matplotlib. Установка верхней/ниже части матрицы ни к Одному приводит к черному треугольнику. Я погуглил для "matplotlib отсутствующие значения", но ничто не мог найти полезным

16
задан Community 8 February 2017 в 14:21
поделиться

3 ответа

Проблема с ответом, предоставленным doug, заключается в том, что он полагается на тот факт, что цветовая карта отображает нулевые значения на белый цвет. Это означает, что цветовые карты, не включающие белый цвет, бесполезны. Ключом к решению является функция cm.set_bad. Вы маскируете ненужные части матрицы с помощью None или маскированных массивов NumPy и set_bad в белый цвет, вместо черного по умолчанию. Приняв пример Дага, мы получим следующее:

import numpy as NP
from matplotlib import pyplot as PLT
from matplotlib import cm as CM

A = NP.random.randint(10, 100, 100).reshape(10, 10)
mask =  NP.tri(A.shape[0], k=-1)
A = NP.ma.array(A, mask=mask) # mask out the lower triangle
fig = PLT.figure()
ax1 = fig.add_subplot(111)
cmap = CM.get_cmap('jet', 10) # jet doesn't have white color
cmap.set_bad('w') # default value is 'k'
ax1.imshow(A, interpolation="nearest", cmap=cmap)
ax1.grid(True)
PLT.show()
22
ответ дан 30 November 2019 в 17:27
поделиться

Для отладки кода сериализации в код необходимо добавить некоторые параметры настройки. См. следующую статью о msdn.

Поиск и устранение распространенных проблем, связанных с GroupSerializer

Также существует тщательная хитрость, которая сохранит файлы, созданные во временной папке, чтобы вы могли видеть происходящее.

В обычных условиях GroupSerializer удаляет источник C # файлы для классов сериализации когда они больше не нужны. Там является выключателем диагностики без документов, однако, который будет инструктировать GroupSerializer удаляет, чтобы оставить их файлы на диске. Можно установить переключиться в файле .config вашего приложения file:

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
    <system.diagnostics>
        <switches>
            <add name="XmlSerialization.Compilation" value="4" />
        </switches>
    </system.diagnostics>
</configuration>

Этот переключатель присутствует в файл .config, исходные файлы C # остаются во временном каталоге. Если вы работа на компьютере под управлением Windows 2000 или более поздней версии, местоположение по умолчанию для временного каталога\Documents and Settings\\LocalSettings\Temp или \ Temp, для web приложения, работающие под ASPNET учетная запись. Файлы C # легко пропустить потому что у них очень странный вид, произвольно сгенерированные имена файлов, что-то вроде: bdz6lq-t.0.cs. GroupSerializerPreCompiler задает это переключатель диагностики, чтобы можно было открыть файлы для проверки строк на , который должен представлять (а) GroupSerializerPreCompiler сообщения об ошибках компиляции в Блокноте или Visual Studio.

-121--4349293-

Вот еще один вариант.

d1 = {'key1'=1, 'key2'=2}
d2 = {'key1'=1, 'key2'='A', 'key4'=4)
d = d2
for k, v in d.iteritems():
... if k in d1.keys() and v!=d1[k]:
... d[k] = [d1[k], v2]
d
{'key2': [2, 'A'], 'key1': 1, 'key4': 4}
-121--4554524-

Можно построить график над одной белой матрицей с верхней/нижней частью прозрачного

a =random((10,10))
imshow(a, interpolation='nearest')

b = ones(a.shape+(4,)) # «white» matrix with alpha=1
for i in range(a.shape[0]):
    for j in range(i, a.shape[1]):
        b[i,j,3] = 0   # upper triangle, alpha = 0
imshow(b, interpolation='nearest')

верхнего/нижнего треугольника тепловой карты http://lh5.ggpht.com/_ZgVr3-a-Z00/S4P3_BWByKI/AAAAAAAAAXE/UsJpokz6LKE/pp.png

2
ответ дан 30 November 2019 в 17:27
поделиться
import numpy as NP
from matplotlib import pyplot as PLT
from matplotlib import cm as CM

A = NP.random.randint(10, 100, 100).reshape(10, 10)
# create an upper triangular 'matrix' from A
A2 = NP.triu(A)
fig = PLT.figure()
ax1 = fig.add_subplot(111)
# use dir(matplotlib.cm) to get a list of the installed colormaps
# the "_r" means "reversed" and accounts for why zero values are plotted as white
cmap = CM.get_cmap('gray_r', 10)
ax1.imshow(A2, interpolation="nearest", cmap=cmap)
ax1.grid(True)
PLT.show()

plot

8
ответ дан 30 November 2019 в 17:27
поделиться
Другие вопросы по тегам:

Похожие вопросы: