루로의 삼각형
16611 단어 파이썬matplotlib
import matplotlib.pyplot as plt
import numpy as np
def rotate(a,theta):
return np.dot(a,np.array([(np.cos(theta),-np.sin(theta)),(np.sin(theta),np.cos(theta))]))
fig,ax = plt.subplots(figsize=(5,5),facecolor='white',dpi=100)
ax.spines['top'].set_visible(False)
ax.spines['right'].set_visible(False)
ax.spines['bottom'].set_position(('data', 0))
ax.spines['left'].set_position(('data', 0))
ax.set_aspect('equal')
r = 1
ax.axis([-r*1.2, r*1.2, -r*1.2, r*1.2])
ax.text(0,0,'O',va='top',ha='right')
ax.plot(*list(zip(*[np.dot(r,(np.cos(e),np.sin(e))) for e in np.arange(0,2*np.pi,1/100)])),color='black',alpha=0.1,linestyle='-.')
ax.plot(*list(zip(*[(0,r),(-np.sqrt(3)*r/2,-r/2),(np.sqrt(3)*r/2,-r/2),(0,r)])),color='black',alpha=0.2)
for i,c in enumerate(['blue','red','green']):
ax.plot(*list(zip(*[rotate(np.dot(np.sqrt(3)*r,(np.cos(e),np.sin(e))) + (0,r), 2*np.pi*i/3) for e in np.arange(0,2*np.pi,1/100)])),color=c,alpha=0.4,linestyle='--')
ax.plot(*list(zip(*[rotate(np.dot(np.sqrt(3)*r,(np.cos(e),np.sin(e))) + (0,r), 2*np.pi*i/3) for e in np.arange(8/6*np.pi,10/6*np.pi,1/100)])),color=c,alpha=1,linewidth=2)
ax.set_xticks([e for e in np.arange(-r,r,r/2)]+[r])
ax.set_xticklabels(['-r',r'-$\frac{r}{2}$','',r'$\frac{r}{2}$','r'])
ax.set_yticks([e for e in np.arange(-r,r,r/2)]+[r])
ax.set_yticklabels(['-r',r'-$\frac{r}{2}$','',r'$\frac{r}{2}$','r'])
plt.show()
plt.clf()
plt.close()
좌표 $(0,r)$의 점을 중심으로 반경 $\sqrt{3}r$로 하단에 그린 푸른 호만을 생각해, 나머지는 그것을 $\frac{2}{3}\pi$ 씩 돌리고 있습니다 (정부가 반대로 시계 방향으로되어 있습니다).
plot()
의 사용법은 ax.plot(x=[x座標だけのリスト],y=[y座標だけのリスト])
라고 하는 것이 기본입니다만, 따로따로 구하거나 분할하거나 하는 것이 기분 나쁘기 때문에 zip 메소드의 반대를 하는 방법으로 1행으로 쓰고 있습니다.list(zip((0,1,2,3),(10,11,12,13)))
[(0, 10), (1, 11), (2, 12), (3, 13)]
list(zip(*[(0, 10), (1, 11), (2, 12), (3, 13)]))
[(0, 1, 2, 3), (10, 11, 12, 13)]
Reference
이 문제에 관하여(루로의 삼각형), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/masudaryo/items/56d6f9f9449a005cf74a텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)