점 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 여기 .
답변
답변
서브 플롯 컬러 바
분산 형 서브 플롯의 경우 보조 그림의 도움으로 “맵핑 가능”을 만든 다음 원래 플롯에 추가하여 축에 컬러 바를 속일 수 있습니다.
위의 예에서 계속 :
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()
무시할 수있는 보조 그림도 출력됩니다.