[python] 줄거리 틱 수 감소

그래프에 틱이 너무 많아 서로 닿아 있습니다.

진드기 수를 어떻게 줄일 수 있습니까?

예를 들어 진드기가 있습니다.

1E-6, 1E-5, 1E-4, ... 1E6, 1E7

그리고 나는 단지 원한다.

1E-5, 1E-3, ... 1E5, 1E7

나는을 가지고 놀았 LogLocator지만 이것을 알아낼 수 없었습니다.



답변

또는 matplotlib이 틱을 배치하는 동안 틱 수를 간단히 설정하려면 (현재는으로 만 MaxNLocator) pyplot.locator_params,

pyplot.locator_params(nbins=4)

아래에서 언급 한 것처럼이 방법에서 특정 축을 지정할 수 있습니다. 기본값은 둘 다입니다.

# To specify the number of ticks on both or any single axes
pyplot.locator_params(axis='y', nbins=6)
pyplot.locator_params(axis='x', nbins=10)


답변

누군가 여전히 검색 결과에서이 페이지를 얻는 경우 :

fig, ax = plt.subplots()

plt.plot(...)

every_nth = 4
for n, label in enumerate(ax.xaxis.get_ticklabels()):
    if n % every_nth != 0:
        label.set_visible(False)


답변

진드기의 사용자 정의 및 모양 문제를 해결하려면 matplotlib 웹 사이트 의 Tick ​​Locators 가이드를 참조하십시오.

ax.xaxis.set_major_locator(plt.MaxNLocator(3))

x 축의 틱 수를 3으로 설정하고 축에 균등하게 분배합니다.

이것에 대한 좋은 튜토리얼 도 있습니다


답변

set_ticks()축 객체에 대한 기능이 있습니다.


답변

누군가가 여전히 그것을 필요로하고 여기에 실제로 아무것도 효과가 없었기 때문에 생성 된 줄거리의 모양을 “있는 그대로”유지하면서 틱 수를 정확히 N으로 고정하는 매우 간단한 방법을 생각해 냈습니다.

import numpy as np
import matplotlib.pyplot as plt

f, ax = plt.subplots()
ax.plot(range(100))

ymin, ymax = ax.get_ylim()
ax.set_yticks(np.round(np.linspace(ymin, ymax, N), 2))


답변

@raphael이 준 솔루션은 간단하고 매우 유용합니다.

여전히 표시된 눈금 레이블은 원래 분포에서 샘플링 된 값이 아니라에서 반환 한 배열 의 인덱스 에서 샘플링 된 값 np.linspace(ymin, ymax, N)입니다.

원래 눈금 레이블과 간격을두고 N 값을 표시하려면이 set_yticklabels()방법을 사용하십시오 . 다음은 정수 레이블이있는 y 축 스 니펫입니다.

import numpy as np
import matplotlib.pyplot as plt

ax = plt.gca()

ymin, ymax = ax.get_ylim()
custom_ticks = np.linspace(ymin, ymax, N, dtype=int)
ax.set_yticks(custom_ticks)
ax.set_yticklabels(custom_ticks)


답변

로그 스케일을 사용하는 경우 다음 명령으로 주요 틱 수를 수정할 수 있습니다

import matplotlib.pyplot as plt

....

plt.locator_params(numticks=12)
plt.show()

numticks표시 할 축 눈금 수 를 결정하도록 설정된 값입니다 .

locator_params()함수 소개에 대해서는 @bgamari의 게시물에 기록 하지만 nticks로그 스케일을 사용 하면 매개 변수에서 오류가 발생합니다.