2013-12-02 3 views
2

Я экспериментирую с портом ggplot для Python. Я могу сделать очень базовую графику без особых проблем, но для меня это становится очень сложным, когда вы пытаетесь еще немного притворяться.Имея два вида графики в одном ggplot

В этом случае я хочу построить 3 переменные A, B и C в то же время вдоль 'x', что можно сделать с помощью простого кода ниже. Тем не менее, я хотел бы отобразить 4-ю переменную (называемую «Назад») на заднем плане дисплея в виде серии прямоугольных цветов (с использованием градиента цвета). Что-то, что может выглядеть немного как этот admitibly плохого фотошоп макет: https://www.dropbox.com/s/euqek8e6nebmau6/Capture%20d%27%C3%A9cran%202013-12-02%2014.29.16.png

Есть ли простой способ сделать этот вид графики с ggplot для питона?

Если это может помочь ответить на вопрос, вот файл XLS, содержащий данные: https://dl.dropboxusercontent.com/u/73950/B.xls

А вот код:

from ggplot import * 
import pandas as pd 
import statsmodels 

xl = pd.ExcelFile('B.xls') 
df = xl.parse("sheet1") 

df_lng = pd.melt(df[['x', 'A', 'B', 'C','Back']], id_vars='x') 
print ggplot(aes(x='x', y='value', colour='variable'), data=df_lng) + geom_line() 
plt.show(1) 

О, а вот пост, который я думаю может помочь сделать трюк. Это было сделано в R, хотя ... https://gist.github.com/dsparks/3866629

ответ

3

Вот код R, чтобы сделать это. Не знаю, как это сделать с Python, но похоже, что это будет похоже.

ggplot(aes(x=x), data=df_lng) + geom_line(aes(y=value, colour=variable), size=1.3) + 
    geom_rect(aes(fill=factor(Back), xmin=x, xmax=x+1, ymin=0, ymax=max(value)*1.07), alpha=.1) + 
    scale_fill_discrete(guide="none") 
+1

Я считаю, что вам нужен слой geom_rect ниже. Кроме того, ymin = -Inf ymax = Inf проще – baptiste

+0

Похоже, что geom_rect еще не работает в порту python (или делает это?). Я пытаюсь выполнить фрагмент в R, но не могу получить данные, расплавленные, как в моем коде python. Как это работает в R? – Rodolphe

+1

Я использовал 'df_lng <- melt (df, id.vars = c (" x "," Back "))' – shadow

Смежные вопросы