私のシステム上で次の最小限の作業例(Pythonの3.5.3、matplotlibの2.0.2)は、コードスニペットを次の画像につながる:設定xticks
import matplotlib.ticker
from matplotlib import pyplot as plt
npts = [2.0, 4.0, 6.0, 8.0, 10.0, 12.0, 14.0, 16.0]
error = [0.0005650356236921, 1.9222448391e-06, 1.05166913e-08,
6.92182e-11, 5.029e-13, 3.8e-15, 4e-16, 2e-16]
fig1, ax1 = plt.subplots()
ax1.plot(npts, error , 'ro')
ax1.set_xscale('log')
ax1.set_yscale('log')
ax1.set_xticks(npts)
ax1.get_xaxis().set_major_formatter(matplotlib.ticker.ScalarFormatter())
plt.show()
ラベル3 x 10^0はまったく存在してはならないことに注意してください。また、2と4のラベルは、不要な2 x 10^0ラベルと4 x 10^0ラベルで重複しています。
下の画像からわかるように、私は、例えば、
ax1.set_xscale('log')
ラインをドロップすることで、プロット「semilogyの」を作る場合、これは発生しません:
これである理由起こっているとどのように解決することができますか?
これらの追加のラベルは、小目盛りのラベルから来ています。 Axesに 'matplotlib.ticker.NullFormatter()'を強制する必要があります。[duplicate question](https://stackoverflow.com/questions/42845694/matplotlib-setting-x-limits-also-forces-tick)を参照してください。 - ラベル)の答え。 – ImportanceOfBeingErnest
@ImportanceOfBeingErnest:ありがとうございます。私はStackoverflowで多くの検索をしましたが、リンク先の質問は見つかりませんでした。 matplotlib.ticker.NullFormatter()を強制すると問題が解決されることを確認します。私は困惑している。 matplotlib 1.5.xから2.0.yへのこの動作の変更は、直感的ではありません。なぜこれが導入されたのか? – Omid