2016-06-27 3 views
2

Simple.csv:Draw 2 geom_line() с ggplot

"","teamID","yearID","HR" 
"1320","LAN",1958,172 
"1325","SFN",1958,170 
"1336","LAN",1959,148 
"1341","SFN",1959,167 
"1352","LAN",1960,126 
"1357","SFN",1960,130 
"1369","LAN",1961,157 
"1375","SFN",1961,183 
"1388","LAN",1962,140 
"1395","SFN",1962,204 
"1408","LAN",1963,110 
"1415","SFN",1963,197 
"1428","LAN",1964,79 
"1435","SFN",1964,165 
"1448","LAN",1965,78 

Я пытаюсь нарисовать 2 geom_line() соответствующей 2 команды (LAN/SFN):

hr_by_team_year = pandas.read_csv("simple.csv")

print ggplot(hr_by_team_year, aes("yearID", "HR", color="teamID")) + geom_point()+ geom_line()

только для получения отдельных точек: enter image description here

Но я предположим, что нарисовать диаграмму, как это:

enter image description here

согласно Plotting Line Charts.

Что случилось с моим кодом?

ответ

1

Иногда бывает проще отлаживать, если указать имя аргумента (даже если они являются необязательными). Предлагая эту модификацию для вашего кода.

ggplot(hr_by_team_year, aes(x="yearID", y="HR", color="teamID")) + geom_line() 

Тогда ваше следующее беспокойство может иметь отношение к годам на оси х. Если ваши данные имеют только числовые годы, то, вероятно, будет работать выше. Если у вас есть даты, с которых вам нужно отображать годы, вам может потребоваться добавить что-то вроде: + scale_x_date(labels='%Y')

Я только что сделал сюжет с датами в нем, где я хотел, чтобы ось х показывала даты на каждые 3 месяца или так. Этот пример кода может также помочь вам:

ggplot(aes(x='Date', y='Price', color='Daily'), data=googleHiLoPlotData) \ 
    + geom_line() + scale_x_date(breaks=date_breaks('3 months'), labels='%m-%d-%Y') \ 
    + ggtitle("Daily Prices of Google") 

Наконец, исследуя, как это сделать, следующий URL помог мне:

http://blog.yhat.com/posts/ggplot-for-python.html

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