2015-07-16 3 views
1

У меня есть небольшая проблема с ggplot barchart.Barchart с ggplot 2-х осевые этикетки

Я хотел сделать барчарт с ggplot2, чтобы сравнить мои Svolumes для моих 4 акций в течение нескольких месяцев.

У меня есть две проблемы:

Первая в том, что моя ось у неправильно. Мой график/данные кажутся правильными, но ось y не «следует», поскольку я думал, что она будет содержать другую шкалу ... Мне нужно было бы «суммировать» число моих наборов данных, я думаю, что здесь он записывает мои значения svolumes , Я не знаю, как объяснить, но мне нужна шкала, соответствующая всем моим данным на графике, как 10,20 и т. Д. До самой высокой суммы svolumes.

Там мой код:

Date=c(rep(data$date)) 
Subject=c(rep(data$subject)) 
Svolume=c(data$svolume) 
Data=data.frame(Date,Subject,Svolume) 

Data=ddply(Data, .(Date),transform,pos=cumsum(as.numeric(Svolume))-(0.5*(as.numeric(Svolume)))) 

ggplot(Data, aes(x=Date, y=Svolume))+ 
    geom_bar(aes(fill=Subject),stat="identity")+ 
    geom_text(aes(label=Svolume,y=pos),size=3) 

и есть мой участок:

my pbarchart

Я помог с вопросом here

Наконец, как я мог бы сделать тот же сюжет на каждый месяц, пожалуйста? Я не знаю, как получить значения в месяц, чтобы получить более читаемый барчер, поскольку мы ничего не можем прочитать здесь ...

Если у вас есть другие идеи для меня, я был бы очень рад принять любые идеи и советы! Возможно, то же самое с линейной диаграммой было бы более читаемым ...? Или, может быть, тот же баркар для каждой акции? (Я не знаю, как получить значения на акцию либо ...)

Я только что нашел, как это сделать с линиями .... но еще раз моя ось y неверна, и это не очень читаемо. ...

linechart

Спасибо за вашу помощь !! :)

+0

переменная ось у является фактором. – user20650

+0

Вы можете сделать фасет по месяцам. – lawyeR

+0

О да, спасибо, моя ось Y была неправильной, потому что мой том считался символом. Итак, я написал: data $ svolume = as.numeric (data $ svolume), и теперь он работает .... Извините ... Да, но я не знаю, как это сделать за каждый месяц, я не знаю, как «достичь» данных в месяц –

ответ

2

Попробуйте добавить следующую строку прямо перед вашей функцией ggplot. Похоже, ваша ось y находится в character. комментарии

[править] инкорпорировать @ user20650, добавьте as.character() первый затем преобразовать в numeric.

Data$Svolume <- as.numeric(as.character(Data$Svolume)) 

Для получения того же участка за каждый месяц, вы можете добавить переменную месяц первый: Data$Month <- month(as.Date(Date)). Затем добавьте facet к вашему объекту ggplot.

ggplot(Data, aes(x=Date, y=Svolume) + 
    ... 
    + facet_wrap(~ Month) 

Например, ваш штрих-код график будет:

Data$Svolume <- as.numeric(as.character(Data$Svolume)) 
Data$Month <- month(as.Date(Date)) 
ggplot(Data, aes(x=Date, y=Svolume)) + 
    geom_bar(aes(fill=Subject),stat="identity") + 
    geom_text(aes(label=Svolume,y=pos),size=3) + 
    facet_wrap(~ Month) 

и ваша линия код диаграмма будет:

Data$Svolume <- as.numeric(as.character(Data$Svolume)) 
Data$Month <- month(as.Date(Date)) 
ggplot(Data, aes(x=Date, y=Svolume, colour=Subject)) + 
    geom_line() + 
    facet_wrap(~ Month) 
+0

Спасибо! Да, у меня есть линейная диаграмма в месяц с вашим кодом, но у меня есть 7 графиков за семь месяцев, поэтому 1, 2, 3 ... вместо «Январь, февраль» ... Знаете ли вы, как я мог это исправить? Кроме того, на моей оси х у меня нет дней, но у меня есть «jan, feb, ...» в Date. У меня есть yyyy-mm-dd, в datetime у меня есть yyy-mm-dd hh-mm-ss , Как я могу провести дни, чтобы анализировать в месяц внутридневные значения? Спасибо за вашу помощь. –

+0

Как и у меня есть результат, который я хотел, но он слишком «далек», поскольку я все еще имею по оси х все даты, а не только месяц. Например, я хотел бы «увеличить», чтобы иметь только данные для моего месяца, а не мой месяц с пустыми полями справа/слева в зависимости от месяца, который у меня есть. Извините за мой английский. Надеюсь, вы понимаете, что я имею в виду. –

+0

@CecJurczyk Не возражаете ли вы приклеивать то, что у вас есть сейчас в своем оригинальном посте? Если у вас есть код для создания образца ваших данных, это будет намного проще. – Boxuan

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