>  기사  >  백엔드 개발  >  Matplotlib에서 산점도에 대한 사용자 정의 이산 색상 막대를 어떻게 만들 수 있습니까?

Matplotlib에서 산점도에 대한 사용자 정의 이산 색상 막대를 어떻게 만들 수 있습니까?

Patricia Arquette
Patricia Arquette원래의
2024-10-25 06:37:02636검색

How can you create a custom discrete colorbar for a scatterplot in Matplotlib?

산점도를 위한 Matplotlib 컬러바 이산화

산점도에서 연속 컬러바는 이산 데이터를 표현하는 데 항상 충분하지 않을 수 있습니다. 기본 패턴을 효과적으로 시각화하려면 개별 컬러바를 만드는 것이 중요합니다.

이를 달성하기 위해 Matplotlib의 BoundaryNorm 클래스를 산점도의 정규화 도구로 활용할 수 있습니다. 이렇게 하면 고유한 값이 고유한 색상으로 표시됩니다.

컬러바를 사용자 정의할 때 특정 값을 회색으로 표시하도록 설정하려고 할 때 한 가지 문제가 발생합니다. 이 문제를 해결하려면 색상 항목을 추출하고 재정의하여 기존 색상 팔레트를 수정할 수 있습니다.

<code class="python">cmaplist = [cmap(i) for i in range(cmap.N)]
# force the first color entry to be grey
cmaplist[0] = (.5, .5, .5, 1.0)</code>

색상 팔레트를 수정한 후 사용자 정의 색상맵을 생성할 수 있습니다. 그런 다음 BoundaryNorm을 사용하여 비닝을 정의하고 이에 따라 데이터를 정규화합니다.

<code class="python">cmap = mpl.colors.LinearSegmentedColormap.from_list(
    'Custom cmap', cmaplist, cmap.N)
bounds = np.linspace(0, 20, 21)
norm = mpl.colors.BoundaryNorm(bounds, cmap.N)</code>

수정된 색상 팔레트와 정규화가 적용되면 산점도를 렌더링할 수 있습니다. 개별 경계와 해당 색상을 표시하도록 사용자 정의된 컬러바를 수용하기 위해 별도의 축이 추가됩니다.

<code class="python">scat = ax.scatter(x, y, c=tag, cmap=cmap, norm=norm)
ax2 = fig.add_axes([0.95, 0.1, 0.03, 0.8])
cb = plt.colorbar.ColorbarBase(ax2, cmap=cmap, norm=norm,
    spacing='proportional', ticks=bounds, boundaries=bounds, format='%1i')</code>

이 접근 방식을 사용하면 산점도 내에서 이산 데이터를 효과적으로 전달하는 사용자 정의 이산 컬러바를 생성할 수 있습니다. 기본 패턴을 보다 명확하게 시각적으로 표현합니다.

위 내용은 Matplotlib에서 산점도에 대한 사용자 정의 이산 색상 막대를 어떻게 만들 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.