2013-08-11 14 views
7

Mam wykreślone (używając matplotlib) serię czasową i powiązane z nią dolne i górne przedziały ufności (które obliczałem w Stata). Użyłem Pand, aby odczytać plik wyjściowy stata.csv, więc seria jest typu pandas.core.series.Series.Używanie metody fill_between() z serią danych PandS

Matplotlib pozwala mi wykreślić te trzy serie na tym samym wykresie, ale chcę przesłonić między górnym i dolnym limitem zaufania, aby wygenerować wizualny przedział ufności. Niestety pojawia się błąd, a cieniowanie nie działa. Myślę, że ma to związek z tym, że funkcje, między którymi chciałbym wypełnić, to pandas.core.series.Series.

Inna wiadomość tutaj sugeruje, że przekazanie wartości my_series.value zamiast my_series rozwiąże ten problem; jednak nie mogę tego uruchomić. Naprawdę doceniam przykład.

+0

można dołączyć przykład co cię mieć zrealizowane do tej pory i co dokładnie chcesz osiągnąć? –

+1

Usunąłem tag Stata. Na twoje pytanie jest przypadkowe, że knujesz wyniki obliczeń w Stacie. Tag po prostu poprowadziłby tutaj ludzi Stata, gdy nie ma odpowiedzi na pytanie Staty. Odwróć to, jeśli uważasz, że jest zdecydowanie źle. –

Odpowiedz

7

Dopóki nie masz NaN wartości w danych, powinno być w porządku:

In [78]: x = Series(linspace(0, 2 * pi, 10000)) 

In [79]: y = sin(x) 

In [80]: fill_between(x.values, y.min(), y.values, alpha=0.5) 

co daje:

enter image description here

+0

Odradzam używanie w tym kontekście nazwy zmiennej "x", ponieważ może to być bardzo mylące, ponieważ jako oś pozioma w standardowej orientacji cathesian określana jest jako oś x (abscisse lub _first_ axis), podczas kreślenia wartości 'x' wzdłuż osi pionowej (rzędna lub oś_dła_na). Bardziej intuicyjne byłoby użycie nazwy zmiennej "y" tutaj, zwłaszcza, że ​​matplotlib jest zgodne z konwencją standardowej ortezji kartezjańskiej. – hooy

+0

Moja notacja widzi dość standardowe użycie w przetwarzaniu sygnałów i tekstach na szeregi czasowe. Mogę zrozumieć twoją skargę, jeśli będzie tona zmiennych, ale mój przykład jest tak prosty, że tak naprawdę nie ma to znaczenia. W [tym artykule na temat szeregów czasowych] (http://en.wikipedia.org/wiki/Time_series) również jest używana ta notacja. –

+0

Whoa, nie odpowiedziałem lub nie powiedziałem, że jest źle. Wiem, że _x (t) _ jest dość powszechnym zapisem, ale tak samo jest _y (t) _. Zwróciłem uwagę, że 'x' jako nazwa zmiennej wykreślona na osi Y może być ogólnie mylące, zwłaszcza że OP wydaje się być nowością w Pythonie i matplotlib (biorąc pod uwagę jego nazwę użytkownika). – hooy

Powiązane problemy