IT이야기

로그 눈금으로 눈금 설정

cyworld 2021. 10. 25. 21:30
반응형

로그 눈금으로 눈금 설정


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()

가능합니까?


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()

결과 플롯


몇 가지 플롯을 추가하고 사소한 눈금을 제거하는 방법을 보여 드리겠습니다.

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()

여기에 이미지 설명 입력


set_xticks작동합니다. 자세히 보면 20, 200, 500에 주요 눈금을 넣습니다( 눈금이 다른 눈금보다 깁니다). 를 호출하지 않고 동일한 플롯과 비교합니다 set_xticks.

요점은 set_xticksticklabels가 아니라 ticks 설정한다는 것입니다. 라벨을 추가하려면

ax1.set_xticklabels(["20", "200", "500"])

plt.show() 전에

ReferenceURL : https://stackoverflow.com/questions/14530113/set-ticks-with-logarithmic-scale

반응형