programing

matplotlib의 작은 산점도 마커는 항상 검은 색입니다.

projobs 2021. 1. 14. 08:02
반응형

matplotlib의 작은 산점도 마커는 항상 검은 색입니다.


매우 작은 회색 점이있는 산점도를 만들기 위해 matplotlib를 사용하려고합니다. 포인트 밀도 때문에 포인트가 작아야합니다. 문제는 scatter () 함수의 마커에 선과 채우기가 모두있는 것 같습니다. 마커가 작 으면 채우기가 아닌 선만 표시되고 선이 올바른 색상이 아닙니다 (항상 검정색).

gnuplot을 사용하여 원하는 것을 정확하게 얻을 수 있습니다. pt 0 lc rgb 'gray'로 'nodes'를 플롯합니다.

matplotlib scatterplot ()을 사용하여 아주 작은 회색 점을 어떻게 만들 수 있습니까?


scatter([1,2,3], [2,4,5], s=1, facecolor='0.5', lw = 0)

마커 크기는 1 (s = 1), facecolor는 회색 (facecolor = '0.5'), 선폭은 0 (lw = 0)으로 설정합니다.


마커에 얼굴이없는 경우 (예 : '+', 를 채울 수 없음 'x')을 edgecolor대신 설정 해야하며 다음 clw같아서는 안됩니다 0.

scatter([1,2,3], [2,4,5], marker='+', edgecolor='r')

다음은 작동하지 않습니다.

scatter([1,2,3], [2,4,5], s=1,  marker='+', facecolor='0.5', lw = 0)

모서리 / 선이 표시되지 않으므로 아무것도 표시되지 않습니다.


질문에 대한 가장 간단한 대답은 color매개 변수 대신 c매개 변수를 사용하여 전체 마커의 색상을 설정하는 것입니다.

결과를 비교하면 차이를 쉽게 확인할 수 있습니다.

from matplotlib import pyplot as plt

plt.scatter([1,2,3], [3,1,2], c='0.8')  # marker not all gray

plt.scatter([1,2,3], [3,1,2], color='0.8')  # marker all gray

세부 정보 : 전체 마커를 동일한 회색 음영으로 만들고자하는 간단한 사용 사례의 경우 얼굴 색상과 가장자리 색상과 같은 사항에 대해 걱정할 필요가 없으며 마커가 모든 가장자리로 정의되는지 여부에 대해 걱정할 필요가 없습니다. 또는 일부 가장자리와 일부 채우기. 대신 color매개 변수를 사용하고 전체 마커가 지정한 단일 색상으로 설정된다는 것을 알고 있어야합니다!


댓글에있는 zwol의 질문에 대한 응답으로-내 평판이 댓글을 남길만큼 높지 않으므로 다음 작업을 수행해야합니다. 색상이 컬러 맵에서 나온 경우 (즉, "매핑 할 값 시퀀스"에서 가져온 것임) color =다음과 같이 사용할 수 있습니다 .

from matplotlib import pyplot

x = [1,5,8,9,5]
y = [4,2,4,7,9]
numSides = [2,3,1,1,5]

cmap = pyplot.cm.get_cmap("copper_r")

min, max = min(numSides), max(numSides)
for i in range(len(x)):
    if numSides[i] >= 2:
        cax = pyplot.scatter(x[i], y[i], marker = '+', s = 100, c = numSides[i], cmap = cmap)
        cax.set_clim(min, max)
    elif numSides[i] == 1:
        pyplot.scatter(x[i], y[i], marker = '.', s = 40, color = cmap(numSides[i]))

fig = pyplot.gcf()
fig.set_size_inches(8.4, 6)
fig.savefig('figure_test.png', dpi = 200)
pyplot.show()

참조 URL : https://stackoverflow.com/questions/6503241/small-scatter-plot-markers-in-matplotlib-are-always-black

반응형