2015-01-06 2 views
-1

Я новичок в R, и, возможно, мой вопрос выглядит глупым, я потратил половину дня, пытаясь решить его самостоятельно без везения. Я не нашел учебника, который иллюстрирует, как это сделать, и если вы знаете такой учебник, вы можете. Я хочу построить гистограмму со средствами, рассчитанными по коэффициентам из столбцов. Мои исходные данные выглядят следующим образом (упрощенный вариант):Как построить гистограмму со средствами, рассчитанными по уровням факторов из нескольких столбцов

code_group scale1 scale2 
    1   5  3 
    2   3  2 
    3   5  2 

Поэтому мне нужна гистограмма, где каждый боб окрашенной code_group и это значение означает для каждого уровня от code_group, х-ось с меткой scale1 и ризуется масштабом2. Каждая метка содержит три компонента (для трех уровней фактора code_group). Я сумел вычислить средства для каждого уровня на моей, это выглядит следующим образом:

code_group scale1  scale2 
    1  -1.0270270 0.05405405 
    2  -1.0882353 0.14705882 
    3  -0.7931034 -0.34482759 

, но я понятия не имею, как построить его в historgam! Заранее спасибо!

+2

Вы действительно хотите гистограмма или, скорее, штриховой график? – CephBirk

ответ

2

Предполагая, что вы имеете в виду гистограмму и не гистограмму (просьба уточнить ваш вопрос, если это не так), вы можете melt ваши данные и построить его с ggplot, как это:

library(ggplot2) 
library(reshape2) 
## 
mdf <- melt(
    df, 
    id.vars="code_group", 
    variable.name="scale_type", 
    value.name="mean_value") 
## 
R> ggplot(
    mdf, 
    aes(x=scale_type, 
     y=mean_value, 
     fill=factor(code_group)))+ 
    geom_bar(stat="identity",position="dodge") 

enter image description here


данных:

df <- read.table(
    text="code_group scale1  scale2 
    1  -1.0270270 0.05405405 
    2  -1.0882353 0.14705882 
    3  -0.7931034 -0.34482759", 
    header=TRUE) 

Edit:
Вы можете просто сделать изменения в самих данных (или его копию), как показано ниже:

mdf2 <- mdf 
mdf2$code_group <- factor(
    mdf2$code_group, 
    levels=1:3, 
    labels=c("neutral", 
      "likers", 
      "lovers")) 
names(mdf2)[1] <- "group" 
## 
ggplot(
    mdf2, 
    aes(x=scale_type, 
     y=mean_value, 
     fill=group))+ 
    geom_bar(stat="identity",position="dodge") 
## 

enter image description here

+0

Ваше решение прекрасно работает, но я обнаружил, что я не могу изменить Apperance легенды и этикетки, например: изображение = ggplot ( кроссе АЕС (х = scale_type, у = mean_value, заливка = коэффициент (code_group))) + geom_bar (stat = "identity", position = "dodge"); image + xlab («Возраст в годах») + ylab («Высота в дюймах»); image + scale_shape_discrete (name = "groups", na.value = "grey50", breaks = c (1,2,3), labels = c ("нейтральный", "likers", "lovers")); это все не работает –

+0

@DmitryMalugin Я обновил свой ответ, дайте мне знать, если это поможет. – nrussell

+0

Да, это очень помогает! –

0

Учитывая средних значения, предоставленные вами, вы могли бы сделать что-то вроде этого:

пересоздания упрощенного набора данных:

d=data.frame(code_group=c(1,2,3),scale1=c(-1.02,-1.08,-0.79),scale2=c(0.05,.15,-0.34)) 

Для создания графика:

barplot(c(d[,'scale1'],d[,'scale2']),col=d[,'code_group'],names.arg=c(paste('scale1',unique(d[,'code_group']),sep='_'),paste('scale2',unique(d[,'code_group']),sep='_'))) 

Это даст вы найдете следующую графику:

enter image description here

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