76

set_xticksは対数スケールで機能していないようです。

from matplotlib import pyplot as plt
fig1, ax1 = plt.subplots()
ax1.plot([10, 100, 1000], [1,2,3])
ax1.set_xscale('log')
ax1.set_xticks([20, 200, 500])
plt.show()

出来ますか?

4

4 に答える 4

94
import matplotlib
from matplotlib import pyplot as plt
fig1, ax1 = plt.subplots()
ax1.plot([10, 100, 1000], [1,2,3])
ax1.set_xscale('log')
ax1.set_xticks([20, 200, 500])
ax1.get_xaxis().set_major_formatter(matplotlib.ticker.ScalarFormatter())

また

ax1.get_xaxis().get_major_formatter().labelOnlyBase = False
plt.show()

結果のプロット

于 2013-01-25T21:43:55.587 に答える
19

いくつかのプロットを追加し、マイナーティックを削除する方法を示します。

OP:

from matplotlib import pyplot as plt

fig1, ax1 = plt.subplots()
ax1.plot([10, 100, 1000], [1,2,3])
ax1.set_xscale('log')
ax1.set_xticks([20, 300, 500])
plt.show()

ここに画像の説明を入力してください

tcaswellが指摘したように、 特定のティックを追加するには、次を使用できますmatplotlib.ticker.ScalarFormatter

from matplotlib import pyplot as plt
import matplotlib.ticker

fig1, ax1 = plt.subplots()
ax1.plot([10, 100, 1000], [1,2,3])
ax1.set_xscale('log')
ax1.set_xticks([20, 300, 500])
ax1.get_xaxis().set_major_formatter(matplotlib.ticker.ScalarFormatter())
plt.show()

ここに画像の説明を入力してください

マイナーティックを削除するには、次を使用できますmatplotlib.rcParams['xtick.minor.size']

from matplotlib import pyplot as plt
import matplotlib.ticker

matplotlib.rcParams['xtick.minor.size'] = 0
matplotlib.rcParams['xtick.minor.width'] = 0

fig1, ax1 = plt.subplots()
ax1.plot([10, 100, 1000], [1,2,3])
ax1.set_xscale('log')
ax1.set_xticks([20, 300, 500])
ax1.get_xaxis().set_major_formatter(matplotlib.ticker.ScalarFormatter())

plt.show()

ここに画像の説明を入力してください

代わり ax1.get_xaxis().set_tick_paramsに使用することもできますが、同じ効果があります(ただし、現在の軸のみを変更し、将来のすべての数値を変更するわけではありませんmatplotlib.rcParams)。

from matplotlib import pyplot as plt
import matplotlib.ticker

fig1, ax1 = plt.subplots()
ax1.plot([10, 100, 1000], [1,2,3])
ax1.set_xscale('log')
ax1.set_xticks([20, 300, 500])
ax1.get_xaxis().set_major_formatter(matplotlib.ticker.ScalarFormatter())

ax1.get_xaxis().set_tick_params(which='minor', size=0)
ax1.get_xaxis().set_tick_params(which='minor', width=0) 

plt.show()

ここに画像の説明を入力してください

于 2016-08-04T21:37:40.550 に答える
2

np.geomspacexticksとして使用する方が良いでしょう

ax = sns.histplot(arr, log_scale=True)
ax.xaxis.set_major_formatter(matplotlib.ticker.ScalarFormatter())
ax.set_xticks( np.geomspace(1, 1500 ,15).round() )

ここに画像の説明を入力してください

于 2021-05-28T04:32:40.050 に答える
1
from matplotlib.ticker import ScalarFormatter, NullFormatter
for axis in [ax.xaxis]:
    axis.set_major_formatter(ScalarFormatter())
    axis.set_minor_formatter(NullFormatter())

これにより、指数表記が削除されます

于 2021-08-13T07:25:12.437 に答える