Seaborn 서브 플롯의 각 행에 대한 컬러 바

로빈 슈미트

나는 비슷한 스레드를 살펴 보았지만 그들 중 어느 것도 나를 위해 일하지 않았습니다. 내가하려는 것은 히트 맵과 높이가 같은 끝에 각 행에 대한 조인트 컬러 바가있는 2x4 히트 맵을 표시하는 것입니다.

axes각 행에 4 개의 행렬과 1 개의 컬러 바 축이 끝에있는 2x5로 만듭니다 . l2_distances여기에는 각 키 MAPPING_DICT가 행렬 (모두 동일한 크기)과 연결된 4 개의 항목이있는 사전 있습니다 .

가장 좋은 방법은 cbar=False내가 플로팅하는 각 히트 맵에 대해 설정 하고 축 (0-3)에 배치하는 반면 각 행의 마지막 히트 맵, 즉 인덱스에서 축에 플로팅 된 히트 맵 3cbar_ax=axes[0,4].

import seaborn as sns
import matplotlib.pyplot as plt

 MAPPING_DICT = {"P": 0, "A": 1, "C": 2, "S": 3}

 fig, axes = plt.subplots(2,5, sharex=True, sharey=True)
 for env_name in l2_distances:
     l2_dist_matrix = l2_distances[env_name]
     cbar_flag = True if MAPPING_DICT[env_name]==3 else False
     sns.heatmap(l2_dist_matrix, ax=axes[0, MAPPING_DICT[env_name]], linewidths=0.2, square=True, cbar=cbar_flag, cbar_ax=axes[0,4], cmap="Blues", xticklabels=False, yticklabels=False, robust=True)

그러나 이것은 컬러 바가 (다소) 올바른 지점에 플로팅되지만 레이블이없고 높이가 잘못되어 있기 때문에 제대로 작동하지 않습니다. 다음은 (컬러 맵 동작에 영향을주지 않는 몇 가지 추가 시각화 추가가있는) 모양의 맨 위 행뿐입니다. 맨 아래 행은 기본적으로 유사합니다.2x5 서브 플롯의 맨 위 행

나는 명시 적으로 새로운 축 위치를 설정하는 것으로 놀았지만 이것은 다소 지루하고 잘 작동하지 않습니다. 내가 놓친 것이 있습니까?

JohanC

가장 큰 문제는 사용하는 것입니다 sharex=Truesharey=True년 Colorbar에게 줄거리의 나머지 부분과 동일한 축을 제공 할 것입니다. 이것은 컬러 바를 너무 엉망으로 만듭니다.

Matplotlib의 두 축에서 sharex 또는 sharey를 설정 해제하는 방법은 컬러 바에 대한 공유를 제거하는 방법을 보여줍니다. 이것은 여전히 ​​내가 해결할 수없는 까다로운 부작용이 있습니다.

이 솔루션은 다음과 줄거리 생성 sharex=Falsesharey=Falsecolorbars 제외한 모든 줄거리를 공유 시작 후합니다. 컬러 바는 다른 서브 플롯만큼 넓을 필요가 없으므로 적절 width_ratios하게 설정할 수 있습니다.

import numpy as np
import seaborn as sns
import matplotlib.pyplot as plt

MAPPING_DICT = {"P": 0, "A": 1, "C": 2, "S": 3}
l2_distances = {"P": np.random.rand(10, 10), "A": np.random.rand(10, 10), "C": np.random.rand(10, 10),
                "S": np.random.rand(10, 10)}

fig, axes = plt.subplots(nrows=2, ncols=5, sharex=False, sharey=False, figsize=(16, 8),
                         gridspec_kw={'width_ratios': [10, 10, 10, 10, 1]})
shax = axes[0, 0].get_shared_x_axes()
shay = axes[0, 0].get_shared_y_axes()
for ax in axes[:, :-1].ravel():
    shax.join(axes[0, 0], ax)
    shay.join(axes[0, 0], ax)
for row in range(axes.shape[0]):
    for env_name in l2_distances:
        l2_dist_matrix = l2_distances[env_name]
        print(env_name, l2_dist_matrix.shape)
        cbar_flag = True if MAPPING_DICT[env_name] == 3 else False
        sns.heatmap(l2_dist_matrix, ax=axes[row, MAPPING_DICT[env_name]], linewidths=0.2, square=True,
                    cbar=cbar_flag, cbar_ax=axes[row, -1], cmap="Blues", xticklabels=False, yticklabels=False,
                    robust=True)
plt.show()

예제 플롯

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

Python의 각 서브 플롯에 대한 회색조 컬러 바 만들기

분류에서Dev

Octave의 각 서브 플롯에 대해 별도의 컬러 맵

분류에서Dev

Scilab : 두 개의 서브 플롯에 대해 동일한 컬러 바

분류에서Dev

여러 팬더 서브 플롯을위한 하나의 컬러 바

분류에서Dev

Python 플롯에서 컬러 바 수정

분류에서Dev

matplotlib의 각 서브 플롯 옆에 막대를 플롯합니까?

분류에서Dev

서브 플롯 컬러 바를 하나의 컬러 바로 바꾸기

분류에서Dev

networkx 플롯에 대한 자체 컬러 바 생성

분류에서Dev

matplotlib 5 서브 플롯의 컬러 바 위치 오류

분류에서Dev

hist2d 서브 플롯에 대해 하나의 컬러 바를 추가하고 인접하게 만들기

분류에서Dev

seaborn pairplot 옆의 컬러 바

분류에서Dev

MATLAB에서 여러 컬러 맵에 대한 컬러 바 표시

분류에서Dev

서로 다른 두 데이터 프레임의 두 열에 대한 Seaborn 플롯

분류에서Dev

Python : 서브 플롯의 각 행에 대해 다른 그림 배경색 플로팅

분류에서Dev

플롯 옵션을 한 번 정의하고 여러 서브 플롯에 대해 호출

분류에서Dev

서브 플롯에서 여러 개의 Seaborn Barplots를 플로팅하는 방법은 무엇입니까?

분류에서Dev

Seaborn을 사용하여 pandas DataFrame의 두 열 사이의 관계를 각각 보여주는 여러 서브 플롯 플로팅

분류에서Dev

서브 플롯으로서의 Seaborn 클러스터 맵

분류에서Dev

여러 시계열의 각 시계열 서브 플롯에 수직선 추가

분류에서Dev

matplotlib의 여러 플롯에 대한 서로 다른 축 제한

분류에서Dev

Seaborn에서 서브 플롯의 크기를 늘리는 방법

분류에서Dev

여러 컬러 바가있는 서브 플롯

분류에서Dev

Plotly : 여러 CONTOUR 플롯에 하나의 컬러 바 사용

분류에서Dev

다양한 데이터 크기에 대한 Matplotlib / Seaborn 바이올린 플롯

분류에서Dev

Seaborn Pairgrid : 모든 비 대각선 플롯에 대해 모든 축을 공유하는 방법 (즉, 각 플롯이 미러와 축을 공유 함)?

분류에서Dev

플롯 히트 맵 (R)에서 컬러 바 레이블 변경

분류에서Dev

Seaborn을 사용하여 동일한 그래픽에 대해 여러 서브 플롯을 사용하는 방법이 있습니까?

분류에서Dev

matplotlib의 서브 플롯에 대한 윤곽 오버 플로팅

분류에서Dev

Matplotlib : 여러 시계열에 대한 서브 플롯 생성

Related 관련 기사

  1. 1

    Python의 각 서브 플롯에 대한 회색조 컬러 바 만들기

  2. 2

    Octave의 각 서브 플롯에 대해 별도의 컬러 맵

  3. 3

    Scilab : 두 개의 서브 플롯에 대해 동일한 컬러 바

  4. 4

    여러 팬더 서브 플롯을위한 하나의 컬러 바

  5. 5

    Python 플롯에서 컬러 바 수정

  6. 6

    matplotlib의 각 서브 플롯 옆에 막대를 플롯합니까?

  7. 7

    서브 플롯 컬러 바를 하나의 컬러 바로 바꾸기

  8. 8

    networkx 플롯에 대한 자체 컬러 바 생성

  9. 9

    matplotlib 5 서브 플롯의 컬러 바 위치 오류

  10. 10

    hist2d 서브 플롯에 대해 하나의 컬러 바를 추가하고 인접하게 만들기

  11. 11

    seaborn pairplot 옆의 컬러 바

  12. 12

    MATLAB에서 여러 컬러 맵에 대한 컬러 바 표시

  13. 13

    서로 다른 두 데이터 프레임의 두 열에 대한 Seaborn 플롯

  14. 14

    Python : 서브 플롯의 각 행에 대해 다른 그림 배경색 플로팅

  15. 15

    플롯 옵션을 한 번 정의하고 여러 서브 플롯에 대해 호출

  16. 16

    서브 플롯에서 여러 개의 Seaborn Barplots를 플로팅하는 방법은 무엇입니까?

  17. 17

    Seaborn을 사용하여 pandas DataFrame의 두 열 사이의 관계를 각각 보여주는 여러 서브 플롯 플로팅

  18. 18

    서브 플롯으로서의 Seaborn 클러스터 맵

  19. 19

    여러 시계열의 각 시계열 서브 플롯에 수직선 추가

  20. 20

    matplotlib의 여러 플롯에 대한 서로 다른 축 제한

  21. 21

    Seaborn에서 서브 플롯의 크기를 늘리는 방법

  22. 22

    여러 컬러 바가있는 서브 플롯

  23. 23

    Plotly : 여러 CONTOUR 플롯에 하나의 컬러 바 사용

  24. 24

    다양한 데이터 크기에 대한 Matplotlib / Seaborn 바이올린 플롯

  25. 25

    Seaborn Pairgrid : 모든 비 대각선 플롯에 대해 모든 축을 공유하는 방법 (즉, 각 플롯이 미러와 축을 공유 함)?

  26. 26

    플롯 히트 맵 (R)에서 컬러 바 레이블 변경

  27. 27

    Seaborn을 사용하여 동일한 그래픽에 대해 여러 서브 플롯을 사용하는 방법이 있습니까?

  28. 28

    matplotlib의 서브 플롯에 대한 윤곽 오버 플로팅

  29. 29

    Matplotlib : 여러 시계열에 대한 서브 플롯 생성

뜨겁다태그

보관