2015-06-13 19 views
7

Xin lỗi tôi không có mã ví dụ cho câu hỏi này.Làm cách nào để đặt nhiều ô trong cùng một biểu đồ trong R?

Tất cả những gì tôi muốn biết là nếu có thể tạo nhiều ô vuông cạnh nhau trong R thể hiện các cột/biến khác nhau trong khung dữ liệu của tôi. Mỗi ô mẫu cũng chỉ đại diện cho một biến duy nhất - tôi muốn đặt thang y thành phạm vi (0,6).

Nếu điều này là không thể, làm thế nào tôi có thể sử dụng một cái gì đó như tùy chọn bảng điều khiển trong ggplot2 nếu tôi chỉ muốn tạo một ô bằng cách sử dụng một biến duy nhất? Cảm ơn!

Lý tưởng nhất, tôi muốn một cái gì đó giống như hình ảnh dưới đây nhưng không có nhóm yếu tố như trong ggplot2. Một lần nữa, mỗi ô sẽ đại diện cho các cột riêng biệt và đơn lẻ.

enter image description here

Trả lời

5

ggplot2 đòi hỏi rằng dữ liệu của bạn được vẽ trên trục y được tất cả trong một cột.

Dưới đây là một ví dụ:

set.seed(1) 
df <- data.frame(
    value = runif(810,0,6), 
    group = 1:9 
) 

df 

library(ggplot2) 
ggplot(df, aes(factor(group), value)) + geom_boxplot() + coord_cartesian(ylim = c(0,6) 

enter image description here

Các ylim(0,6) bộ trục y là giữa 0 và 6

Nếu dữ liệu của bạn là trong các cột, bạn có thể nhận được chúng vào dạng dài sử dụng melt từ reshape2 hoặc gather từ tidyr. (các phương pháp khác cũng có sẵn).

+2

LƯU Ý: đối với ggplot2 'ylim()' tập hợp dữ liệu để hiển thị ô ảnh. sử dụng 'coord_cartesian (ylim =)' thay vì –

+1

@AaronKatch đánh bắt tốt (nếu bạn cớ chơi chữ) – jalapic

+0

Cảm ơn, @jalapic! Vì vậy, tôi vết thương bằng cách sử dụng tidyr và ggplot2 theo đề xuất của bạn: 'long <- gather (nhóm1, biến, giá trị, var1: var44) ggplot (dài, aes (yếu tố (biến), giá trị)) + geom_boxplot() + coord_cartesian (ylim = c (0,6)) 'nhưng vết thương với âm mưu kỳ lạ này: http://tinypic.com/r/261z0qg/8. Tôi cho rằng tôi chỉ có quá nhiều biến cho điều này để có vẻ hợp lý; trong trường hợp này, có bất kỳ tùy chọn nào để thay đổi kích thước hay tôi chỉ cần bỏ và sử dụng các ô bảng điều khiển? Cảm ơn một lần nữa! – poeticpersimmon

5

Bạn có thể làm điều này nếu bạn reshape dữ liệu của bạn sang định dạng dài

## Some sample data 
dat <- data.frame(a=rnorm(100), b=rnorm(100), c=rnorm(100)) 

## Reshape data wide -> long 
library(reshape2) 
long <- melt(dat) 
plot(value ~ variable, data=long) 

enter image description here

+0

Cảm ơn, @LegalizeIt! Tôi vết thương bằng cách sử dụng tidyr để định hình lại dữ liệu của tôi thành một df dài: 'library (tidyr) long <- tập hợp (nhóm1, biến, giá trị, var1: var44) lô (giá trị ~ biến, dữ liệu = dài)' nhưng vết thương với âm mưu tìm kiếm kỳ lạ này: http://tinypic.com/r/2rn77no/8 ... Vì tôi có hơn 40 âm mưu, tôi đang cố gắng ép lại với nhau, đó là mục tiêu ban đầu của tôi? Nếu vậy, tôi có thể chuyển sang các ô của bảng điều khiển. – poeticpersimmon

Các vấn đề liên quan