그래프에 틱이 너무 많아 서로 닿아 있습니다.
진드기 수를 어떻게 줄일 수 있습니까?
예를 들어 진드기가 있습니다.
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
로그 스케일을 사용 하면 매개 변수에서 오류가 발생합니다.