x ekseni noktaları için özel metinle çizim


106

Matplotlib ve python kullanarak aşağıdaki örnek kod gibi bir arsa çiziyorum.

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

Yukarıdaki kod x ekseni üzerinde olduğu için çizilmiş değerleri, 0.0, 0.5, 1.0, 1.5yani referans x değerlerimin aynı değerlerini göreceğim .

Her bir x noktasını farklı bir dizgeye eşlemenin bir yolu var mı? Örneğin, x ekseninin ay adlarını (dizeleri Jun, July,...) veya kişi adları ( "John", "Arnold", ...) veya saat zamanı ( "12:20", "12:21", "12:22", ..) gibi diğer dizeleri göstermesini istiyorum .

Ne yapabileceğimi veya hangi işlevi görebileceğimi biliyor musunuz?
Amacım için matplotlib.tickeryardımcı olabilir mi?

Yanıtlar:


195

Xticks'i (ve yticks'i) pyplot.xticks kullanarak manuel olarak ayarlayabilirsiniz :

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
rotationbazen yararlıdır:plt.xticks(range(5), ["some", "words", "as", "x", "ticks"], rotation=45)
Adobe

4
Ve öğeler x ekseni boyunca eşit olarak nasıl dağıtılır? Diyelim ki x eksenimin dahili olarak 1 Milyon noktası var ve ben sadece John, Arnold, Mavis ve Matt'i eşit olarak dağıtılmış eksen boyunca mı görüntülemek istiyorum?
Steve K

@SirBenBenji: x[idx]Yalnızca görüntülemek istediğiniz verileri seçmek için indekslemeyi (örn. ) Kullanın .
unutbu

Neden pylab yazdığını anlamıyorum, bu cevap bence modası geçmiş ve yanlış.
Mario Krenn

1

Bu benim için çalıştı. X ekseninde her ay

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)
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.