교과서에 나오는 등고선을 그려 보자 (Python)
6786 단어 파이썬matplotlib
소개
필자는 대학의 공학부에서 배우는 유체역학을 공부하고 있지만, 유체역학의 첫번째 쪽(완전 유체의 이론)에서는 속도 잠재력 $\phi$ 과 흐름 함수 $\psi$ 라고 하는 물리량이 나타나, 그 양 를 이용한 대표적인 흐름의 예가 몇 가지 나온다(이중 밀어남 등). 이 양의 2 차원에서의 등고선이 교과서의 그림으로 실려 있지만, 스스로도 작도 할 수 있으면 이해가 깊어지는 것 같다. 그러나 $y = f (x) $ 함수를 손쉽게 그릴 수있는 그래프 소프트웨어 서비스에서는 2 차원면에서 특정 물리량의 등고선을 그리는 것이 어려울 수 있습니다. 이전 기사에서는 Fortran + gnuplot으로 그려 보았지만 역시 인기있는 프로그래밍 언어로 해보고 싶기 때문에 이번에는 Python을 사용하여 등고선을 그려 보겠습니다.
사전 준비: Python 및 필요한 모듈 설치
Python은 멀티 플랫폼이므로 각 환경에 맞게 설치합니다. Python의 설치 방법은 여러가지 있으므로 스스로 조사해 좋은 것들을 선택해 주었으면 한다. 설치가 어려울 것 or PC에 여러가지 설치하고 싶지 않다고 하는 사람에게는 Google 공동체의 이용을 추천한다.
파이썬 본문 외에도 모듈로 numpy와 matplotlib이 필요합니다. OS에 원래 들어있는 Python 등을 이용하는 경우는 추가 인스톨한다.
대상으로 하는 유동장
이전 기사와 동일한 연설 거품과 흡입을 대상으로합니다. 원점으로부터의 거리를 $r$ 로 하면, 3차원에서의 속도 포텐셜 $\phi$ 는 이하와 같이 나타낼 수 있다.
$$
\phi = -\frac{m}{r},\, r =\sqrt{x^2+y^2+z^2}\tag{1}
$$
여기서 $ m $는 연설 거품의 강도라고하는 계수입니다. 2차원의 등고선을 그리고 싶기 때문에, $z=0$ 로서,
$$
\phi = -\frac{m}{r},\, r =\sqrt{x^2+y^2}\tag{2}
$$
을 그려 보자.
작업 정책
파이썬의 matplotlib 모듈은 다양한 드로잉을 허용하므로 작업은 파이썬에서만 해결됩니다.
Python은 멀티 플랫폼이므로 각 환경에 맞게 설치합니다. Python의 설치 방법은 여러가지 있으므로 스스로 조사해 좋은 것들을 선택해 주었으면 한다. 설치가 어려울 것 or PC에 여러가지 설치하고 싶지 않다고 하는 사람에게는 Google 공동체의 이용을 추천한다.
파이썬 본문 외에도 모듈로 numpy와 matplotlib이 필요합니다. OS에 원래 들어있는 Python 등을 이용하는 경우는 추가 인스톨한다.
대상으로 하는 유동장
이전 기사와 동일한 연설 거품과 흡입을 대상으로합니다. 원점으로부터의 거리를 $r$ 로 하면, 3차원에서의 속도 포텐셜 $\phi$ 는 이하와 같이 나타낼 수 있다.
$$
\phi = -\frac{m}{r},\, r =\sqrt{x^2+y^2+z^2}\tag{1}
$$
여기서 $ m $는 연설 거품의 강도라고하는 계수입니다. 2차원의 등고선을 그리고 싶기 때문에, $z=0$ 로서,
$$
\phi = -\frac{m}{r},\, r =\sqrt{x^2+y^2}\tag{2}
$$
을 그려 보자.
작업 정책
파이썬의 matplotlib 모듈은 다양한 드로잉을 허용하므로 작업은 파이썬에서만 해결됩니다.
파이썬의 matplotlib 모듈은 다양한 드로잉을 허용하므로 작업은 파이썬에서만 해결됩니다.
라는 흐름으로 Python 스크립트를 만든다. 고도의 일은하지 않기 때문에, 객체 지향 등은 고려하지 않는다.
파이썬 스크립트
다음은 스크립트 예제입니다.
contour.py
import matplotlib
import numpy as np
import matplotlib.pyplot as plt
xmin = -10.0
xmax = 10.0
ymin = -10.0
ymax = 10.0
delta = 0.1
x = np.arange(xmin,xmax,delta)
y = np.arange(xmin,xmax,delta)
m = 1.0
X, Y = np.meshgrid(x,y)
r = np.sqrt(X**2 + Y**2)
Z = -m/r
fig, ax = plt.subplots(figsize=(6,6))
levels = np.arange(-1.0,0.0,0.2)
cont = ax.contour(X,Y,Z,levels)
cont.clabel(fmt='%1.1f', fontsize=12)
plt.show()
먼저 $x$, $y$에 좌표값을 넣고 $X$, $Y$가 격자점으로 변환한 것이다. matplotlib의 그래프 그리기에는 두 가지 방법이 있지만 Artist 객체를 사용하는 방법을 사용합니다. 등고선에 수치를 넣을 수있는 것은 matplotlib의 장점 중 하나이므로 넣어 두었다.
터미널에서 위의 스크립트를 실행하는 것은 다음과 같습니다. 등고선 다이어그램이 별도의 창에 나타납니다.
python contour.py
이미지를 저장하려면이 드로잉 창에서 저장 버튼을 눌러 저장하거나 스크립트의 마지막 plt.show()
을 다음으로 변경하십시오.
plt.savefig('c2.png')
요약
Python의 matplotlib 기능을 사용하여 등고선을 쉽게 그리는 방법을 소개했습니다. 이번에는 matplotlib의 설정에 관해서 필요 최소한의 것 밖에 설정하고 있지 않지만, matplotlib는 그래프의 구석구석까지 상세하게 설정할 수 있으므로, 고집되면 교과서에 실려 있는 그림을 올바르게 깨끗이 묘화하는 것도 가능하다 .
Reference
이 문제에 관하여(교과서에 나오는 등고선을 그려 보자 (Python)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/yotakagi77/items/1a703e1f42b2521ca7f8
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
import matplotlib
import numpy as np
import matplotlib.pyplot as plt
xmin = -10.0
xmax = 10.0
ymin = -10.0
ymax = 10.0
delta = 0.1
x = np.arange(xmin,xmax,delta)
y = np.arange(xmin,xmax,delta)
m = 1.0
X, Y = np.meshgrid(x,y)
r = np.sqrt(X**2 + Y**2)
Z = -m/r
fig, ax = plt.subplots(figsize=(6,6))
levels = np.arange(-1.0,0.0,0.2)
cont = ax.contour(X,Y,Z,levels)
cont.clabel(fmt='%1.1f', fontsize=12)
plt.show()
python contour.py
plt.savefig('c2.png')
Python의 matplotlib 기능을 사용하여 등고선을 쉽게 그리는 방법을 소개했습니다. 이번에는 matplotlib의 설정에 관해서 필요 최소한의 것 밖에 설정하고 있지 않지만, matplotlib는 그래프의 구석구석까지 상세하게 설정할 수 있으므로, 고집되면 교과서에 실려 있는 그림을 올바르게 깨끗이 묘화하는 것도 가능하다 .
Reference
이 문제에 관하여(교과서에 나오는 등고선을 그려 보자 (Python)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/yotakagi77/items/1a703e1f42b2521ca7f8텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)