2013-01-17 2 views
1

У меня есть следующий код, чтобы сделать график моих данных:цвета точек по значениям х-оси в ggplot

library(ggplot2) 
library(reshape) 

sdata <- read.csv("http://dl.dropbox.com/u/58164604/sdata.csv", stringsAsFactors = FALSE) 
pdata<-melt(sdata, id.vars="Var") 
p<-ggplot(pdata, aes(Var,value,col=variable)) 
p+geom_point(aes(shape = variable),alpha=0.7) 

Это создает граф с «Var» является осью х и «значения» быть ось y. Что бы я хотел сделать, это изменить цвет точек. Вместо того, чтобы быть под именем переменной, я бы хотел, чтобы они были по значению «Var». Поэтому мне бы хотелось, чтобы все точки, имеющие значение Var от 1 до 10, были одним цветом, 11-20 - другим и т. Д. Для 21-30, 31-35 и 36-41. Мне также хотелось бы, чтобы лента/область затенены за этими точками, которая простирается от самого высокого до самого низкого значения для каждого значения Вар, но эта лента также должна иметь тот же цвет, что и точки, только с более низкой прозрачностью уровень.

Для бонусного вопроса у меня также возникает проблема с получением переменной «mean» из моего примера, чтобы отображаться как geom_line, а не geom_point. Я играл с этим:

p+geom_point()+geom_line(data=pdata[which(pdata$variable=="Mean")]) 

но я не могу заставить его работать. Если кто-то может помочь с любым из этого, это будет здорово. Благодарю.

ответ

0

Что касается вашего первого вопроса, вы можете использовать функцию cut для классификации ваших непрерывных данных по категориям. Например:

with(mtcars, cut(mpg, seq(min(mpg), max(mpg), length = 5)) 

Это сокращает непрерывные значения в столбце mpg на 5 классов.

1

Использование cut с опциями labels=F, я добавляю новую переменную для раскраски.

pdata <- transform(pdata,varc =cut(pdata$Var,10,labels=F)) 
p<-ggplot(subset(pdata,variable!='Mean'), aes(Var,value,col=varc)) 
p+geom_point(aes(shape = variable),alpha=0.7)+ 
geom_line(data=subset(pdata,variable =='Mean'),size=2) 

Edit: лента часть

Я не понимаю, часть ленты (может быть, если вы можете объяснить более верхние и нижние значения), но я думаю, что здесь мы можем просто использовать geom- многоугольник

last_plot()+ geom_polygon(aes(fill=varc, group=variable),alpha=0.3,linetype=3) 

enter image description here

+0

Спасибо за вашу помощь. Извините, что я не стал более ясным. Данные, которые я использую, - это 5 разных категорий, поэтому я хотел бы, чтобы все точки от 1 до 10 отображались в одном цвете и от 11 до 20 других цветов и так далее. Чтобы было легче видеть, я думал о том, чтобы использовать максимальное значение для каждого Var (от 1 до 41), которое является переменной 5 и самой низкой переменной 10 и затеняет их в том же цвете, что и точки. Таким образом, для значений от 1 до 10 будет затененный фон одного цвета, а затем от 11 до 20 будет другой цвет и так далее. – Chris

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