5
색을 사용하여지도에 두 개의 변수 x
및 y
을 표시하려고합니다.Matplotlib 두 매개 변수가있는 색상 표
지금까지 내가 할 수있는 최선의 방법은 한 변수에 색상을 사용하고 다른 변수에는 투명도를 사용하는 것입니다.
plt.Polygon(shape.points, fill=False, color=cmap(y), alpha=x)
색을 사용하여지도에 두 개의 변수 x
및 y
을 표시하려고합니다.Matplotlib 두 매개 변수가있는 색상 표
지금까지 내가 할 수있는 최선의 방법은 한 변수에 색상을 사용하고 다른 변수에는 투명도를 사용하는 것입니다.
plt.Polygon(shape.points, fill=False, color=cmap(y), alpha=x)
일반적으로 matplotlib의 색상 맵은 1D이며, 즉 스칼라를 색상으로 매핑합니다. 2D 칼라 맵을 얻으려면 어떻게 든 두 개의 스칼라를 색상으로 매핑해야합니다. 이것은 원칙적으로 가능하지만 일반적인 색상 맵만큼 편리하지는 않습니다.
다음은 두 매개 변수를 각각 빨강 및 파랑 RGB 색상 채널에 매핑하여 2D 색상 맵을 만드는 예제입니다.
import matplotlib.pyplot as plt
import numpy as np
fig, ax = plt.subplots()
ax.set_aspect("equal")
x = [1,1,2,2,3,3] # xdata
y = [1,2,3,1,2,3] # ydata
p1 = [0.2,0.4,.6,.8,.6,.1] # parameter 1
p2 = [0.4,0.5,.7,.1,.3,.7] # parameter 2
# create a very simple colormap,
# mapping parameter 1 to the red channel and
# parameter 2 to the blue channel
cmap = lambda p1,p2 : (p1, 0, p2)
# put shapes at positions (x[i], y[i]) and colorize them with our
# cmap according to their respective parameters
for i in range(len(x)):
circle = plt.Circle((x[i], y[i]), 0.5, color=cmap(p1[i],p2[i]))
ax.add_artist(circle)
tx="p1: {}\np2: {}".format(p1[i],p2[i]) # create a label
ax.text(x[i], y[i], tx, ha="center", color="w", va="center")
ax.set_xlim(0,4)
ax.set_ylim(0,4)
ax.set_xlabel("x")
ax.set_ylabel("y")
# create the legend:
plt.subplots_adjust(left=0.1, right=0.65, top=0.85)
cax = fig.add_axes([0.7,0.55,0.3,0.3])
cp1 = np.linspace(0,1)
cp2 = np.linspace(0,1)
Cp1, Cp2 = np.meshgrid(cp1,cp2)
C0 = np.zeros_like(Cp1)
# make RGB image, p1 to red channel, p2 to blue channel
Legend = np.dstack((Cp1, C0, Cp2))
# parameters range between 0 and 1
cax.imshow(Legend, origin="lower", extent=[0,1,0,1])
cax.set_xlabel("p1")
cax.set_ylabel("p2")
cax.set_title("2D cmap legend", fontsize=10)
plt.show()
이 제도
물론 다른 (더 복잡) colormappings로 확장 할 수 있으며, imshow 또는 pcolormesh 플롯 할 수 있습니다. 또한 HSV colorscheme을 사용하면 RGB와 비교할 때 이점이 있으므로matplotlib.colors.hsv_to_rgb(hsv)
이 도움이 될 수 있습니다.
관련 항목 (확실히 중복 안 함) http://stackoverflow.com/q/10958835/2988730 –
특히 두 번째 대답 http://stackoverflow.com/a/10992313/2988730 –
또한 자신의 색상 맵을 구현해 볼 수도 있습니다 x와 y를 단일 매개 변수로 인코딩합니다 (예 : 복소수 및 해당 인코딩 된 값을 반환하는 함수가 있습니다. –