점 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 여기 .
cm.colormap_name
그리고 cm.cmapname
실제적인 변수 matplotlib.cm
; 그것은 단지에 대한 의사의 cm.jet
또는 cm.veridis_r
등,
cmap
또는 c
목록 을 변경하는 방법이 있습니까?
서브 플롯 컬러 바
분산 형 서브 플롯의 경우 보조 그림의 도움으로 "맵핑 가능"을 만든 다음 원래 플롯에 추가하여 축에 컬러 바를 속일 수 있습니다.
위의 예에서 계속 :
import numpy as np
import matplotlib.pyplot as plt
x = np.arange(10)
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')
# Build your secondary mirror axes:
fig2, (ax3, ax4) = plt.subplots(1, 2)
# Build maps that parallel the color-coded data
# NOTE 1: imshow requires a 2-D array as input
# NOTE 2: You must use the same cmap tag as above for it match
map1 = ax3.imshow(np.stack([t, t]),cmap='viridis')
map2 = ax4.imshow(np.stack([t, t]),cmap='viridis_r')
# Add your maps onto your original figure/axes
fig.colorbar(map1, ax=ax1)
fig.colorbar(map2, ax=ax2)
plt.show()
무시할 수있는 보조 그림도 출력됩니다.
plt.colorbar()
명령으로 색상에 대한 범례를 얻을 수 있습니다 .