의 내가 같은 데이터가 있다고 가정 해 봅시다 :사용자 정의 된 색상 맵을 작성하여 다양한 데이터 범위에 사용하는 방법은 무엇입니까?
import numpy as np
import matplotlib.pyplot as plt
import matplotlib.colors
# for reproducibility purposes
np.random.seed(0)
# generate some data
n = 30
x = np.array(range(n))
a1 = np.random.rand(n)
a2 = a1 * 100
그리고 내가
을 제공합니다 (this answer의 변화)
cmap = matplotlib.colors.LinearSegmentedColormap.from_list("", [(0., '#9696ff'), (0.2, '#f0ffff'), (1.0, '#ff0000')])
fig, (ax1, ax2) = plt.subplots(1, 2)
ax1.scatter(x, a1, c=a1, cmap=cmap)
ax2.scatter(x, a2, c=a2, cmap=cmap)
plt.show()
을 할 수있는 두 개의 줄거리에서이 데이터를 플롯 할
문제는 내가 가지고있는 문제는이 데이터가 동일하다는 것입니다. 오른쪽은 100 배 더 큽니다.
그래서, 두 플롯에 모두 사용할 수있는 컬러 맵을 갖고 싶습니다. 위와 같은 명령을 사용하여 (대신
matplotlib.colors.LinearSegmentedColormap.from_list("", [(0., '#9696ff'), (0.2, '#f0ffff'), (1.0, '#ff0000')])
의 나는
min_a1_a2 = min(min(a1), min(a2))
max_a1_a2 = max(max(a1), max(a2))
cmap = matplotlib.colors.LinearSegmentedColormap.from_list("", [(min_a1_a2, '#9696ff'), ((min_a1_a2 + max_a1_a2)/2., '#f0ffff'), (max_a1_a2, '#ff0000')])
같은 것을 사용하고 싶습니다 그러나 이것은 항상 내가 scatter
에 전달 오류
ValueError: data mapping points must start with x=0. and end with x=1
결과).
임의의 (값, 색상) 튜플에서 matplotlib.colors.LinearSegmentedColormap.from_list
까지 전달한 다음 생성 된 색상 맵을 예 : scatter
만약 그렇다면 어떻게하나요?
통해
vmax
를 사용어느 단지 'ax1.scatter (X, A1, C = A1, cmap를 = cmap를, VMIN = min_a1_a2 , vmax = max_a1_a2)'(a2에 대한 아날로그)? 플롯은 이제 괜찮아 보입니다 ... 간단했습니다, 고마워요! – Cleb