2015-01-05 11 views
15

Mam następujący kod wykreślić linię i punkt:Jak wykreślić jeden punkt danych?

df = pd.DataFrame({'x': [1, 2, 3], 'y': [3, 4, 6]}) 
point = pd.DataFrame({'x': [2], 'y': [5]}) 
ax = df.plot(x='x', y='y', label='line') 
ax = point.plot(x='x', y='y', ax=ax, style='r-', label='point') 

Jak mogę uzyskać pojedynczy punkt danych, aby pokazać się?

Plot with line and no point

+0

Ok, dzięki za odpowiedź. Czy istnieje nawet metoda tworzenia wykresów dla pojedynczych punktów danych? jeśli tak, czy możesz to nazwać? dzięki! –

+0

Peter, dzięki za twoje pytanie. Zmontowałem go, aby był powtarzalnym, minimalnym przykładem. Jeśli to możliwe, spróbuj to zrobić w przyszłości. Usunąłem także tagi szeregów czasowych i prognostycznych (nie było to pytanie modelujące) i dodałem znacznik pandy (ponieważ wymaga wykreślania z 'pandami'). –

Odpowiedz

3

Podczas kreślenia pojedynczy punkt danych, nie można wykreślić przy użyciu linii. Jest to oczywiste, gdy się nad tym zastanowić, ponieważ podczas kreślenia linii faktycznie wykreśla się między punktami danych, więc jeśli masz tylko jeden punkt danych, nie masz nic do połączenia z linią.

Można wykreślić pojedyncze punkty danych za pomocą znaczników, są one zazwyczaj nanoszone bezpośrednio na punkt danych, a więc nie ma znaczenia, czy masz tylko jeden punkt danych.

W tej chwili używasz

ax = point.plot(x='x', y='y', ax=ax, style='r-', label='point') 

do działki. W ten sposób powstaje czerwona linia (r dla czerwieni, - dla linii). Jeśli użyjesz następującego kodu, otrzymasz niebieskie krzyże (b dla niebieskiego, x dla krzyża).

ax = point.plot(x='x', y='y', ax=ax, style='bx', label='point') 

pandas wykorzystuje matplotlib wewnętrznie do kreślenia, można znaleźć różne argumenty stylu w tabelach here. Aby wybrać różne style (jeśli na przykład nie potrzebujesz znaczników, gdy masz wiele punktów danych), możesz po prostu sprawdzić długość zestawu danych, a następnie użyć odpowiedniego stylu.

+0

dzięki! to, czego szukałem! miłego dnia! –

+0

Nie musisz też ponownie przypisywać 'siekiery'. –

39

Aby wykreślić jeden punkt można zrobić coś takiego:

plt.plot([x], [y], marker='o', markersize=3, color="red") 
+0

Uwaga: można również pominąć nawiasy. – Karlo

+0

Myślę, że częścią tego, co OP chce, jest umieszczenie tego punktu w legendzie, zważywszy na użycie argumentu "etykieta" w wykreślaniu pand. Czy istnieje sposób, aby to zrobić tutaj? W nowym powtarzalnym przykładzie to nie działa: 'plt.plot (point ['x'], point ['y'], marker = 'o', markersize = 3, color = 'red', label = ' punkt ")". –

Powiązane problemy