your programing

Python의 산점도 및 색상 매핑

lovepro 2020. 10. 16. 07:55
반응형

Python의 산점도 및 색상 매핑


점 x와 y의 범위가 numpy 배열에 저장되어 있습니다. x (t)와 y (t)를 나타냅니다. 여기서 t = 0 ... T-1

다음을 사용하여 산점도를 플로팅하고 있습니다.

import matplotlib.pyplot as plt

plt.scatter(x,y)
plt.show()

시간을 나타내는 컬러 맵을 갖고 싶습니다 (그러므로 numpy 배열의 인덱스에 따라 포인트를 채색합니다)

그렇게하는 가장 쉬운 방법은 무엇입니까?


다음은 예입니다.

import numpy as np
import matplotlib.pyplot as plt

x = np.random.rand(100)
y = np.random.rand(100)
t = np.arange(100)

plt.scatter(x, y, c=t)
plt.show()

여기에서 인덱스에 따라 색상 설정하고 t단지 배열입니다 [1, 2, ..., 100].여기에 이미지 설명 입력

이해하기 쉬운 예는 약간 더 간단합니다.

import numpy as np
import matplotlib.pyplot as plt

x = np.arange(100)
y = x
t = x
plt.scatter(x, y, c=t)
plt.show()

여기에 이미지 설명 입력

전달하는 배열 c은 특정 순서 나 유형을 가질 필요가 없습니다. 즉,이 예제 에서처럼 정렬하거나 정수일 필요가 없습니다. 플로팅 루틴은 최소 / 최대 값 c이 컬러 맵의 맨 아래 / 위에 해당하도록 컬러 맵을 조정합니다.

컬러 맵

다음을 추가하여 컬러 맵을 변경할 수 있습니다.

import matplotlib.cm as cm
plt.scatter(x, y, c=t, cmap=cm.cmap_name)

matplotlib.cm컬러 맵도 호출 할 수 있으므로 가져 오기 는 선택 사항 cmap="cmap_name"입니다. 각각의 모습을 보여주는 컬러 맵 참조 페이지 가 있습니다. 컬러 맵을 간단히 cmap_name_r. 그래서

plt.scatter(x, y, c=t, cmap=cm.cmap_name_r)
# or
plt.scatter(x, y, c=t, cmap="cmap_name_r")

작동합니다. 예는 "jet_r"또는 cm.plasma_r입니다. 다음은 새로운 1.5 컬러 맵 viridis의 예입니다.

import numpy as np
import matplotlib.pyplot as plt

x = np.arange(100)
y = x
t = x
fig, (ax1, ax2) = plt.subplots(1, 2)
ax1.scatter(x, y, c=t, cmap='viridis')
ax2.scatter(x, y, c=t, cmap='viridis_r')
plt.show()

여기에 이미지 설명 입력

컬러 바

다음을 사용하여 컬러 바를 추가 할 수 있습니다.

plt.scatter(x, y, c=t, cmap='viridis')
plt.colorbar()
plt.show()

여기에 이미지 설명 입력

Figure와 서브 플롯을 명시 적으로 (예 : fig, ax = plt.subplots()또는 ax = fig.add_subplot(111)) 사용하는 경우 컬러 바를 추가하는 것이 약간 더 복잡 할 수 있습니다. 좋은 예를 찾을 수 있습니다 여기에 하나의 부가 적 줄거리의 년 Colorbar에 대한2 줄거리 1 년 Colorbar 여기 .


위의 wflynny의 답변에 추가하려면 여기 에서 사용 가능한 컬러 맵을 찾을 수 있습니다.

예:

import matplotlib.cm as cm
plt.scatter(x, y, c=t, cmap=cm.jet)

또는 대안으로

plt.scatter(x, y, c=t, cmap='jet')

참고 URL : https://stackoverflow.com/questions/17682216/scatter-plot-and-color-mapping-in-python

반응형