x 軸の目盛りを 10e-20, 10e-19, ..., 10e-1 まで log スケールで設定したいということでしょうか?
numpy.logspace を使うと、log スケールで等間隔な数列を作成できるので、これを使って作成した目盛りの値を set_xticks で設定してください。
python
1import matplotlib.pyplot as plt
2import numpy as np
3import math
4
5Mx = 10 ** 2
6f = np.logspace(-20, -1, 100, base=10)
7t = (16 * math.pi * Mx)/(f ** 2 * math.sqrt(1 - 64 / Mx ** 2))
8
9fig, ax = plt.subplots(figsize=(12, 6))
10ax.scatter(f, t)
11
12ax.set_xscale("log")
13ax.set_yscale("log")
14ax.set_xticks(np.logspace(-20, -1, 20, base=10))
15
16plt.show()
また、この後Mxの値を 10e4 10e6 10e8 10e10
に変えた5つの散布図を作り同じグラフ上に表示させたいのですが、調べてもよくわからず合わせてご教授いただけませんでしょうか。
python
1import matplotlib.pyplot as plt
2import numpy as np
3import math
4
5fig, ax = plt.subplots(figsize=(12, 6))
6params = [10e2, 10e4, 10e6, 10e8, 10e10]
7
8for Mx in params:
9 f = np.logspace(-20, -1, 100, base=10)
10 t = (16 * math.pi * Mx) / (f ** 2 * math.sqrt(1 - 64 / Mx ** 2))
11
12 ax.scatter(f, t, label=f"Mx = {Mx:.0e}")
13 ax.set_xscale("log")
14 ax.set_yscale("log")
15 ax.set_xticks(np.logspace(-20, -1, 20, base=10))
16
17ax.legend()
18plt.show()
追記
python
1import matplotlib.pyplot as plt
2import numpy as np
3import math
4
5fig, ax = plt.subplots(figsize=(12, 6))
6params = [10 ** (-12), 10 ** (-11), 10 ** (-10), 10 ** (-9), 10 ** (-8)]
7
8for f in params:
9 Mx = np.logspace(1, 10, 100, base=10)
10 t = (16 * np.pi * Mx) / (f ** 2 * np.sqrt(1 - 64 / Mx ** 2))
11 ax.scatter(Mx, t, label=f"f = {f}")
12
13ax.set_xscale("log")
14ax.set_yscale("log")
15ax.legend()
16
17plt.show()
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/01/09 08:11
2020/01/09 08:19
2020/01/09 08:30
2020/01/09 08:37
2020/01/09 09:07
2020/01/09 09:31