2017-10-18 76 views
0

我正在構建一個函數,允許用戶傳遞一個ggplot對象,然後應用基於其他參數的格式。我需要知道劇情使用什麼類型的比例(離散/填充/連續),所以我知道要應用什麼類型的配色方案。ggplot - 獲取比例尺信息(has_scale,is_discrete)

例如

p <- ggplot(mpg, aes(x = displ, y = hwy, colour = cyl)) + geom_point() 

str(p$scales$scales)給我,看起來很有希望清單,但許多事情表明是功能,我不能工作了如何拉出來的細節。

scale_name顯示'position_d'離散,'position_c'在控制檯連續等,但str(p$scales$scale_name)返回null

我已經試過

b <- ggplot_build(p) 

b$layout$get_scales() etc 

但仍獲得的功能,我不能使用

+0

請格式化代碼以提高可讀性。 – jdv

回答

0

你可以試試這個

p <- ggplot(mpg, aes(x = displ, y = hwy, colour = cyl)) + geom_point() 
ggplot_build(p)$layout$panel_scales 

$x 
$x[[1]] 
<ScaleContinuousPosition> 
    Range: 1.6 -- 7 
Limits: 1.6 -- 7 


$y 
$y[[1]] 
<ScaleContinuousPosition> 
    Range: 12 -- 44 
Limits: 12 -- 44 
+0

謝謝Hardik,但我無法讓它工作。我在$ x的'$''中得到'Error:意外'$'。我有進一步的bt,發現類(ggplot_build(p)$ plot $ scales $ scales [[3]])[2]給了我一些正確的時間,但不可靠。 –

+0

@Matt_B - 我只從代碼中運行代碼,它沒有給出任何錯誤 –

+0

奇怪,如果我使用相同的代碼,仍然會出現錯誤。我試過'ggplot_build(p)$ layout $ panel_scales $ x [[1]]' 也是,並且返回NULL。 你使用的是什麼版本的ggplot?我在2.2.1.9000 –