matplotlib에서 marker="."보다 작은 점 플롯
16342 단어 matplotlib
결론
s
파라미터가 마커 크기를 설정하는 파라미터입니다.plt.scatter(x, y, marker=".", s=1, linewidths=0)
※ s
파라미터를 놓치고 있어 여러가지 왕따 돌고 있었습니다. 코멘트로 하는 방법을 가르쳐 주셨으므로 이 기사의 내용은 이것으로 끝입니다.
유물
부끄럽지만 시행 착오의 이력은 남겨 둡니다. 좀처럼 이상한 마커를 플롯하고 싶을 때 도움이 될지도 모릅니다.
클릭하여 확장
요약
제목대로. 하려고 하면 좀처럼 방법을 찾을 수 없었기 때문에.
결론만 읽고 싶은 사람은 결론 축을 사용한 방법
조사하고 있으면 제대로 된 방법이 발견되었으므로 갱신했습니다 2020/03/19/21:29
이전 프리
Python의 그래프 드로잉 라이브러리 matplotlib에서 산점도를 그릴 때 매우 세밀한 점을 부왓과 늘어놓고 싶을 때가 있지요.plt.scatter
의 마커는 marker
파라미터로 지정할 수 있어 세세한 점을 칠 때는 marker='.'
로 합니다. ( ※ matplotlib.pyplot.scatter )
그러나 이 '.'
의 마커(문서의 description에서는 「point」라고 불리고 있습니다), 이것으로도 아직 조금 큰 생각이 듭니다.
rand = lambda n:[np.random.rand() for _ in range(n)]
xy = (rand(100), rand(100))
plt.scatter(*xy, marker=".")
마커 테두리를 지웁시다.
plt.scatter(*xy, marker=".", linewidth=0)
약간 작아진 것 같습니다만 이것으로도 아직 큰 생각이 듭니다. 더 쓰레기 같은 점이 치고 싶다.
matplotlib.markers 에 대한 설명을 읽으면 "",": :pixel"이라는 것이 있습니다. 그래 그래, 픽셀 단위 레벨의 점이 치고 싶었던 것입니다.
plt.scatter(*xy, marker=",")
왜 이렇게 됐어…
아무래도 사이즈가 규격화되어 있는 것 같고, 형태를 지정하면 이 사이즈 가득이 되도록 확대 축소되는 것 같습니다.
결론 귀찮은 예
마커 사이즈의 규격화를 무효로 하는 파라미터를 찾을 수 없었기 때문에, 망식적으로 「규격화되어도 작게 보이는 마커」를 만들어 보겠습니다. (직접 마커 크기를 지정할 수 있는 방법을 아시는 분은 가르쳐 주세요 m(_ _)m)( Axes를 사용한 예 에)marker
파라미터에 「2차원 좌표의 튜플의 배열」을 주는 것으로 임의의 다각형을 그릴 수가 있습니다.
이것을 이용해 폭 제로의 대각선을 당겨 사이즈를 확보하고 나서 중심에 작은 사각형을 만듭니다.
(이런)
t = 0.1
plt.scatter(*xy, marker=[(0,0), (-1,-1), (1,1), (0,0), (t,t), (-t,t), (-t,-t), (t,-t), (t,t), (0,0)], linewidths=0)
쓰레기 같은 점을 치는 데 성공했습니다!
마커 오브젝트를 만들어 0~1배의 임의의 사이즈의 점을 치도록 해 보았습니다.
from matplotlib.markers import MarkerStyle
dot = lambda t: MarkerStyle([(0,0), (-1,-1), (1,1), (0,0), (t,t), (-t,t), (-t,-t), (t,-t), (t,t), (0,0)])
plt.scatter(*xy, marker=dot(0.2), linewidths=0)
솔직히 더 괜찮은 방법이 있을까… 잘 부탁드립니다.
축을 사용한 방법
Axes.plot
에서는 Line2D 매개 변수를 지정할 수 있으며 여기에 markersize
가 있다는 것을 알았습니다.
fig, ax = plt.subplots()
ax.plot(*xy, linestyle='none', marker=',', markersize=1)
이것이 가장 괜찮은 방법이라고 생각합니다.
조금 까다로운 일을 하려고 한다면 역시 객체 지향 인터페이스를 사용해야 합니다.
이 기사가 도움이됩니다. 빨리 알아두고 싶었던 matplotlib의 기초 지식, 혹은 외형의 조정이 끝나는 Artist의 이야기 @skotaro 씨
※작은 점에서 하고 싶었던 것
이렇게 농담을 점의 밀도로 표현하고 싶었습니다.
func = lambda x,y:np.sin(x*np.pi)**2 * np.exp(-y**2/2)
n = 100
dx = 0.02
xlin = np.arange(-2,2,dx)
ylin = np.arange(-2,2,dx)
xx, yy = np.meshgrid(xlin, ylin)
pltx, plty = [], []
for x, y in zip(xx.flatten(), yy.flatten()):
dense = func(x+dx/2, y+dx/2)
pltx += [x+np.random.rand()*dx for _ in range(int(dense*n))]
plty += [y+np.random.rand()*dx for _ in range(int(dense*n))]
plt.scatter(pltx, plty, s=0.01, marker='.', alpha=0.1)
plt.xlim(-2,2)
plt.ylim(-2,2)
plt.show()
(쓸데없이 굉장히 무겁기 때문에 컬러 맵으로 하는 것이 좋다고 생각합니다.)
Reference
이 문제에 관하여(matplotlib에서 marker="."보다 작은 점 플롯), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/Mopepe51/items/9ec37045ced786042769
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
부끄럽지만 시행 착오의 이력은 남겨 둡니다. 좀처럼 이상한 마커를 플롯하고 싶을 때 도움이 될지도 모릅니다.
클릭하여 확장
요약
제목대로. 하려고 하면 좀처럼 방법을 찾을 수 없었기 때문에.
결론만 읽고 싶은 사람은 결론 축을 사용한 방법
조사하고 있으면 제대로 된 방법이 발견되었으므로 갱신했습니다 2020/03/19/21:29
이전 프리
Python의 그래프 드로잉 라이브러리 matplotlib에서 산점도를 그릴 때 매우 세밀한 점을 부왓과 늘어놓고 싶을 때가 있지요.
plt.scatter
의 마커는 marker
파라미터로 지정할 수 있어 세세한 점을 칠 때는 marker='.'
로 합니다. ( ※ matplotlib.pyplot.scatter )그러나 이
'.'
의 마커(문서의 description에서는 「point」라고 불리고 있습니다), 이것으로도 아직 조금 큰 생각이 듭니다.rand = lambda n:[np.random.rand() for _ in range(n)]
xy = (rand(100), rand(100))
plt.scatter(*xy, marker=".")
마커 테두리를 지웁시다.
plt.scatter(*xy, marker=".", linewidth=0)
약간 작아진 것 같습니다만 이것으로도 아직 큰 생각이 듭니다. 더 쓰레기 같은 점이 치고 싶다.
matplotlib.markers 에 대한 설명을 읽으면 "",": :pixel"이라는 것이 있습니다. 그래 그래, 픽셀 단위 레벨의 점이 치고 싶었던 것입니다.
plt.scatter(*xy, marker=",")
왜 이렇게 됐어…
아무래도 사이즈가 규격화되어 있는 것 같고, 형태를 지정하면 이 사이즈 가득이 되도록 확대 축소되는 것 같습니다.
결론 귀찮은 예
마커 사이즈의 규격화를 무효로 하는 파라미터를 찾을 수 없었기 때문에, 망식적으로 「규격화되어도 작게 보이는 마커」를 만들어 보겠습니다. (직접 마커 크기를 지정할 수 있는 방법을 아시는 분은 가르쳐 주세요 m(_ _)m)( Axes를 사용한 예 에)
marker
파라미터에 「2차원 좌표의 튜플의 배열」을 주는 것으로 임의의 다각형을 그릴 수가 있습니다.이것을 이용해 폭 제로의 대각선을 당겨 사이즈를 확보하고 나서 중심에 작은 사각형을 만듭니다.
(이런)
t = 0.1
plt.scatter(*xy, marker=[(0,0), (-1,-1), (1,1), (0,0), (t,t), (-t,t), (-t,-t), (t,-t), (t,t), (0,0)], linewidths=0)
쓰레기 같은 점을 치는 데 성공했습니다!
마커 오브젝트를 만들어 0~1배의 임의의 사이즈의 점을 치도록 해 보았습니다.
from matplotlib.markers import MarkerStyle
dot = lambda t: MarkerStyle([(0,0), (-1,-1), (1,1), (0,0), (t,t), (-t,t), (-t,-t), (t,-t), (t,t), (0,0)])
plt.scatter(*xy, marker=dot(0.2), linewidths=0)
솔직히 더 괜찮은 방법이 있을까… 잘 부탁드립니다.
축을 사용한 방법
Axes.plot
에서는 Line2D 매개 변수를 지정할 수 있으며 여기에 markersize
가 있다는 것을 알았습니다.
fig, ax = plt.subplots()
ax.plot(*xy, linestyle='none', marker=',', markersize=1)
이것이 가장 괜찮은 방법이라고 생각합니다.
조금 까다로운 일을 하려고 한다면 역시 객체 지향 인터페이스를 사용해야 합니다.
이 기사가 도움이됩니다. 빨리 알아두고 싶었던 matplotlib의 기초 지식, 혹은 외형의 조정이 끝나는 Artist의 이야기 @skotaro 씨
※작은 점에서 하고 싶었던 것
이렇게 농담을 점의 밀도로 표현하고 싶었습니다.
func = lambda x,y:np.sin(x*np.pi)**2 * np.exp(-y**2/2)
n = 100
dx = 0.02
xlin = np.arange(-2,2,dx)
ylin = np.arange(-2,2,dx)
xx, yy = np.meshgrid(xlin, ylin)
pltx, plty = [], []
for x, y in zip(xx.flatten(), yy.flatten()):
dense = func(x+dx/2, y+dx/2)
pltx += [x+np.random.rand()*dx for _ in range(int(dense*n))]
plty += [y+np.random.rand()*dx for _ in range(int(dense*n))]
plt.scatter(pltx, plty, s=0.01, marker='.', alpha=0.1)
plt.xlim(-2,2)
plt.ylim(-2,2)
plt.show()
(쓸데없이 굉장히 무겁기 때문에 컬러 맵으로 하는 것이 좋다고 생각합니다.)
Reference
이 문제에 관하여(matplotlib에서 marker="."보다 작은 점 플롯), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/Mopepe51/items/9ec37045ced786042769
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
fig, ax = plt.subplots()
ax.plot(*xy, linestyle='none', marker=',', markersize=1)
이렇게 농담을 점의 밀도로 표현하고 싶었습니다.
func = lambda x,y:np.sin(x*np.pi)**2 * np.exp(-y**2/2)
n = 100
dx = 0.02
xlin = np.arange(-2,2,dx)
ylin = np.arange(-2,2,dx)
xx, yy = np.meshgrid(xlin, ylin)
pltx, plty = [], []
for x, y in zip(xx.flatten(), yy.flatten()):
dense = func(x+dx/2, y+dx/2)
pltx += [x+np.random.rand()*dx for _ in range(int(dense*n))]
plty += [y+np.random.rand()*dx for _ in range(int(dense*n))]
plt.scatter(pltx, plty, s=0.01, marker='.', alpha=0.1)
plt.xlim(-2,2)
plt.ylim(-2,2)
plt.show()
(쓸데없이 굉장히 무겁기 때문에 컬러 맵으로 하는 것이 좋다고 생각합니다.)
Reference
이 문제에 관하여(matplotlib에서 marker="."보다 작은 점 플롯), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/Mopepe51/items/9ec37045ced786042769텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)