2014-10-20 13 views
5

मैं ggplot का उपयोग करके एक ताप नक्शा बनाना चाहता हूं हालांकि मैं अवलोकनों की संख्या से y-axis को ऑर्डर करना चाहता हूं। मैं कॉलम एन द्वारा डेटा फ्रेम को ऑर्डर करता हूं और समूह नाम पर अवलोकनों की संख्या जोड़ता हूं ताकि यह धुरी लेबल में दिखाई दे। जब मैं डेटा प्लॉट करता हूं तो समूह नाम के आधार पर पुन: आदेश देता है। डेटा फ्रेम में दिखाई देने वाले क्रम के आधार पर कारक स्तर निर्धारित करने का कोई तरीका है?मैं डेटा फ्रेम में दिखाई देने वाले क्रम में कारक स्तर कैसे सेट करूं?

कुछ डेटा:

library(dplyr) 
library(tidyr) 
library(ggplot2) 

school <- c("School A", "SChool B", "School C", "School D", "School E", "School F") 
N <- c(25,28,12,22,30,25) 
var1 <- c(1,0,1,1,0,1) 
var2 <- c(0,0,0,1,0,1) 
var3 <- c(0,1,0,1,1,1) 

df <- tbl_df (data.frame (school, N, var1, var2, var3)) 

df <- arrange (df, N) %>% 
    gather (variable, value, var1:var3) 

df$school <- paste0 (df$school, " (", df$N, ")") 

df <- select (df, school, variable, value) 

ggplot(df, aes(variable, school)) + geom_tile(aes(fill = value), colour = "white") + 
    scale_fill_gradient(low = "white",high = "steelblue") 

अंत में मैं स्कूलों के आदेश होना चाहते हैं:

स्कूल सेल्सियस (12)

स्कूल डी (22)

स्कूल एक (25)

स्कूल एफ (25)

स्कूल बी (28)

स्कूल ई (30)

मैं कई भूखंडों मैं स्वचालित रूप से ऐसा करने के लिए एक रास्ता खोजने के लिए और कारक के स्तर को फिर से सेट प्रत्येक के लिए समय नहीं चाहते हैं के लिए ऐसा करना चाहते हैं के रूप में । इस के आसपास

उत्तर

4

एक तरह से

ggplot(df, aes(variable, factor(school, levels = unique(school)))) + ... 

करने के लिए अपने ggplot कॉल बदलने के लिए इस हर बार टाइपिंग से बचने के लिए है, तो आप एक समारोह

f <- function(x) factor(x, levels = unique(x)) 

और फिर ggplot(df, aes(variable, f(school))) + ...

द्वारा इसे कहते बना सकते हैं

ध्यान दें कि यह साजिश के तल पर कारक का पहला स्तर रखेगा।

df$school <- reorder(df$school, rep(6:1, length.out=length(k)), order=TRUE) 

enter image description here

+0

धन्यवाद @ कोंवास - पूरी तरह से काम किया। – Greg

0

एक करने के लिए तरीका होगा की जरूरत है ggplot() पर कॉल करने से ठीक पहले कोड।

library(forcats) 
df$school <- fct_inorder(df$school) %>% fct_rev() 

fct_inorder() डेटा फ्रेम क्रम में कारक के स्तर बनाता है और fct_rev() उन्हें पराजयों तो साजिश सही दिशा में चला जाता है।

2

के लिए निम्न forcats पाइप जोड़ें: आप इसे शीर्ष पर चाहते हैं, आप बनाने के लिए school स्तंभ और आदेश दिया कारक बदलने के लिए ffunction(x) factor(x, levels = rev(unique(x)))

संबंधित मुद्दे