x 축 점에 대한 사용자 지정 텍스트로 플롯


106

아래 샘플 코드와 같이 matplotlib 및 python을 사용하여 플롯을 그리고 있습니다.

x = array([0,1,2,3])
y = array([20,21,22,23])
plot(x,y)
show()

x 축 위의 코드이기 때문에 그려진 값, 0.0, 0.5, 1.0, 1.5즉 내 참조 x 값과 동일한 값을 볼 수 있습니다.

어쨌든 x의 각 지점을 다른 문자열에 매핑 할 수 있습니까? 예를 들어 x 축에 월 이름 (strings Jun, July,...) 또는 사람 이름 ( "John", "Arnold", ...) 또는 시계 시간 ( "12:20", "12:21", "12:22", ..) 과 같은 다른 문자열을 표시하고 싶습니다 .

내가 무엇을 할 수 있는지 또는 어떤 기능을 살펴 봐야하는지 아십니까?
내 목적 matplotlib.ticker에 도움 이 될 수 있습니까?

답변:


195

pyplot.xticks를 사용하여 xticks (및 yticks)를 수동으로 설정할 수 있습니다 .

import matplotlib.pyplot as plt
import numpy as np

x = np.array([0,1,2,3])
y = np.array([20,21,22,23])
my_xticks = ['John','Arnold','Mavis','Matt']
plt.xticks(x, my_xticks)
plt.plot(x, y)
plt.show()


44
rotation또한 때때로 유용하다 :plt.xticks(range(5), ["some", "words", "as", "x", "ticks"], rotation=45)
어도비

4
x 축을 따라 항목을 균등하게 분산하는 방법은 무엇입니까? 내 x 축에 내부적으로 100 만 개의 점이 있고 축을 따라 John, Arnold, Mavis 및 Matt 만 균일하게 분포되어 있다고 가정 해 보겠습니다.
Steve K

@SirBenBenji : 인덱싱 (예 :)을 사용 x[idx]하여 표시하려는 데이터 만 선택합니다.
unutbu 2014-08-05

나는 당신이 pylab을 작성하는 이유를 이해하지 못합니다. 그 대답은 제 생각에 구식이고 틀 렸습니다.
Mario Krenn

1

이것은 나를 위해 일했습니다. X 축에서 매월

str_month_list = ['January','February','March','April','May','June','July','August','September','October','November','December']
ax.set_xticks(range(0,12))
ax.set_xticklabels(str_month_list)
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.