下我的系統(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×10^0和4×10^0標籤重疊。
如果我做圖中的「semilogy」,通過降低
ax1.set_xscale('log')
這是爲什麼發生以及如何解決?
那些額外的標籤來自較小的標籤。你需要在軸上強制執行'matplotlib.ticker.NullFormatter()',參見[重複問題](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