3

周波数についてプロットを作成したいと思います。hereのように上付き文字表記の x 軸が必要です。さらに、キロヘルツとメガヘルツを分離した垂直注釈付きの垂直線が必要です。

import numpy as np
import matplotlib.pyplot as plt
band = np.linspace(0,10**12,100)
y = band

plt.plot(band,y)
plt.xlabel('Frequencies')

plt.vlines(10**3, min(y), max(y),colors = 'black', label = 'kilo Hz')
plt.vlines(10**6, min(y), max(y),colors = 'black', label = 'mega Hz')
plt.legend()
plt.show()

ティッカーを使用してみましたが、設定方法がわかりません。いくつかの例に従おうとしましたが、AttributeError: 'Figure' object has no attribute 'ticklabel_format' すでにかなりの時間を費やしており、先に進む方法がわからないなどのエラーが発生しました。

plt.xscale('log')一般に、線形スケールを維持したい場合よりも、同様の方法でフォーマットされた x 軸が必要です。

4

2 に答える 2

5

目盛りを文字列として定義し、それらを割り当てることができます。

mport numpy as np
import matplotlib.pyplot as plt
band = np.linspace(0,10**12,100)
y = band

plt.plot(band,y)
plt.xlabel("Frequencies")

plt.vlines(10**3, min(y), max(y),colors = 'black', label = 'kilo Hz')
plt.vlines(10**6, min(y), max(y),colors = 'black', label = 'mega Hz')

string_labels = []
for i in range(0,len(y),10):
    string_labels.append(r"$10^{%02d}$" % (i/10.0))

plt.xticks(np.linspace(0,10**12,10),string_labels)

plt.legend()
plt.show()
于 2013-05-13T20:46:41.683 に答える