답변:
또는 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)
numticks
대신nbins
numticks
가 지적한대로 대수 플롯에 대한 솔루션을 추가 할 수 있습니까?
[0, 1, ..., 99]
한 세트는 지금 nticks=10
, 새로운 스파 스 라벨은 오랫동안 떨어져 축을 따라, 즉 지금과 같이 열 번 배치됩니다 1
어디에 앉을 9
이었다 2
곳 19
이었다 ... 그리고 9
곳 99
이었다.
누군가 여전히 검색 결과에서이 페이지를 얻는 경우 :
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으로 설정하고 축에 균등하게 분배합니다.
이것에 대한 좋은 튜토리얼 도 있습니다
ax = df.plot()
pandas.DataFrame
날짜 시간 인덱스가 [2019-01-01, ... 2019-11-01] 인 df ( ) 가 있으면을 호출 ax = df.plot()
하고 그림 객체를 반환하십시오. call ax.xaxis.set_major_locator(plt.MaxNLocator(3))
은 처음 3 개의 인덱스 만 표시합니다 [2019-01-01, 2019-01-02, 2019-01-03].
df.plot()
종종을 표시 minor_locator
하므로 시도해 볼 수 있습니다 ax1.xaxis.set_minor_locator(plt.MaxNLocator(3))
. 또한 3
표시하려는 진드기 수 를 대신 사용하십시오 . 팬더 import matplotlib.dates as mdates
ax.xaxis.set_minor_locator(mdates.MonthLocator(interval = 1))
ax.xaxis.set_minor_formatter(mdates.DateFormatter('%m-%Y'))
set_ticks()
축 객체에 대한 기능이 있습니다.
get_xticks()
하거나 get_yticks()
먼저 필요에 따라 편집 한 다음 목록을 다시 전달할 수 set_ticks()
있습니다.
set_ticks()
, set_xticks()
그리고 set_yticks()
있습니다. 이것들은 축이 아닌 좌표축 객체의 속성입니다. 아마도 이것은 지난 몇 년 동안 바뀌었을 것입니다.
누군가가 여전히 그것을 필요로하고 여기에 실제로 아무것도 효과가 없었기 때문에 생성 된 줄거리의 모양을 "있는 그대로"유지하면서 틱 수를 정확히 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))
ax.set_yticks(np.linspace(int(ymin), int(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
로그 스케일을 사용 하면 매개 변수에서 오류가 발생합니다.
pyplot.locator_params(axis = 'x', nbins = 4)
(또는axis = 'y'
) 할 수있게함으로써 매우 간단했습니다. 감사합니다 @bgamari!