2014-04-20 23 views
5

Próba ustalenia, jaki jest najlepszy sposób wykreślenia punktu na linii liczbowej w pythonie. Zasadniczo próbuje zrobić coś podobnego do obrazka poniżej:Punkt wykresu na linii prostej (linia numeryczna) w Pythonie

Point on a number line

Próbowałem użyć matplotlib, aby to zrobić, ale nie wydaje się rysunek. Czy ktoś wie o paczce lub czymkolwiek, z czego mogę skorzystać?

+1

Co próbowałeś? Wygląda na to, że to, co chcesz, powinno być całkiem łatwe przy użyciu mpl. – tacaswell

+0

Czy możesz wskazać mi przykład? Próbowałem wyłączyć oś y, ale nadal otrzymuję kwadratowy wykres. A kiedy próbuję dodać pionowe linie na końcu, wciąż rozciągają się one na cały kwadrat, – JDGD

Odpowiedz

7

Nie znam konkretnego pakietu dla tego, ale można zrobić coś takiego w Matplotlib przy użyciu hlines, vlines i plot.

import matplotlib.pyplot as plt 

# set up the figure 
fig = plt.figure() 
ax = fig.add_subplot(111) 
ax.set_xlim(0,10) 
ax.set_ylim(0,10) 

# draw lines 
xmin = 1 
xmax = 9 
y = 5 
height = 1 

plt.hlines(y, xmin, xmax) 
plt.vlines(xmin, y - height/2., y + height/2.) 
plt.vlines(xmax, y - height/2., y + height/2.) 

# draw a point on the line 
px = 4 
plt.plot(px,y, 'ro', ms = 15, mfc = 'r') 

# add an arrow 
plt.annotate('Price five days ago', (px,y), xytext = (px - 1, y + 1), 
       arrowprops=dict(facecolor='black', shrink=0.1), 
       horizontalalignment='right') 

# add numbers 
plt.text(xmin - 0.1, y, '80', horizontalalignment='right') 
plt.text(xmax + 0.1, y, '115', horizontalalignment='left') 

plt.axis('off') 
plt.show() 

enter image description here

+0

Linia w środku jest dokładnie tym, czego szukam, ale czy istnieje sposób, w jaki mogę pozbyć się wszystkiego wokół? Próbuję to zbudować, aby zaimplementować skrypt, który automatycznie zapisuje obrazy, a następnie wyświetla je na stronie internetowej. – JDGD

+0

Możesz użyć funkcji plt.axis ("off"), aby wyłączyć oś. Zobacz moją edycję. – Molly