에서 contourf
함수를 사용하여 플로팅 matplotlib
중이며 컬러 바를 추가하고 싶습니다. 가끔 틱이 최대 / 최소 값으로 이동하지 않는 경우가 있습니다.
이 값에 틱을 설정하도록 강제하는 깨끗한 방법이 있습니까?
참고 :max
및 min
of를 확인하면 z
컬러 바가 약 -1에서 1까지의 값을 나타내는 것으로 표시됩니다. 따라서이 값이 반영되어 colobar의 범위를 볼 수있을뿐만 아니라 그 사이의 일부 틱도 볼 수 있습니다.
내가 말하는 것을 보여주는 플롯과 코드
import matplotlib.pyplot as plt
import numpy as np
# Data to plot.
x, y = np.meshgrid(np.arange(7), np.arange(10))
z = np.sin(0.5 * x) * np.cos(0.52 * y)
fig, ax = plt.subplots()
cs = ax.contourf(x, y, z, levels=25)
ax.grid(c="k", ls="-", alpha=0.3)
fig.colorbar(cs, ax=ax)
fig.savefig("example.png", bbox_inches="tight")
가장 깨끗한 방법은에 명시적인 수준을 제공하는 것 같습니다 contourf
. 명시적인 수준이 제공되지 않으면 contourf
데이터의 최소값과 최대 값에 따라 자체 수준 을 선택하고 "멋진"숫자를 찾으려고 시도합니다. 그 후, 틱은 이러한 숫자의 하위 집합으로 설정되어 틱은 항상 실제 수준과 일치합니다. (사용 colorbar(..., ticks=...)
하는 경우 해당 진드기가 반드시 레벨과 일치하지는 않습니다.)
도달하지 않는 사인 및 코사인으로 -1
하고 1
정확한 주어진 예에서, 그들은 범위의 일부가 아닙니다.
다음 코드는 선택한 레벨에 따라 틱이 어떻게 달라지는 지 보여줍니다. 으로 np.linspace(-1, 1, 24)
수준이 좋은 라운드 수 없지만,하기 matplotlib 아직 보여줄 수있는 부분 집합을 선택합니다.
import matplotlib.pyplot as plt
import numpy as np
x, y = np.meshgrid(np.arange(7), np.arange(10))
z = np.sin(0.5 * x) * np.cos(0.52 * y)
fig, (ax1, ax2) = plt.subplots(ncols=2, figsize=(12, 3))
for ax in (ax1, ax2):
numcontours = 25 if ax == ax1 else 24
cs = ax.contourf(x, y, z, levels=np.linspace(-1, 1, numcontours))
ax.grid(c="k", ls="-", alpha=0.3)
fig.colorbar(cs, ax=ax)
ax.set_title(f'{numcontours} levels from -1 to 1')
plt.show()
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다