2016-03-17 6 views
0

Я экспериментировал с этим code, и я пытаюсь получить линии сетки над сюжетом.Как получить тройные контурные сюжеты с ggtern 2.1.0?

enter image description here

код используется такой же, как в OP:

#Orignal Data as per Question 
a <- c(0.1, 0.5,0.5, 0.6, 0.2, 0   , 0   , 0.004166667, 0.45) 
b <- c(0.75,0.5,0 , 0.1, 0.2, 0.951612903,0.918103448, 0.7875  , 0.45) 
c <- c(0.15,0 ,0.5, 0.3, 0.6, 0.048387097,0.081896552, 0.208333333, 0.10) 
d <- c(500,2324.90,2551.44,1244.50, 551.22,-644.20,-377.17,-100, 2493.04) 
df <- data.frame(a, b, c, d) 

#For labelling each point. 
df$id <- 1:nrow(df) 

#Build Plot 
ggtern(data=df,aes(x=c,y=a,z=b),aes(x,y,z)) + 
    stat_density2d(geom="polygon", 
       n=400, 
       aes(fill=..level.., 
       weight=d, 
       alpha=abs(..level..)), 
       binwidth=100) + 
    geom_density2d(aes(weight=d,color=..level..), 
       n=400, 
       binwidth=100) + 
    geom_point(aes(fill=d),color="black",size=5,shape=21) + 
    geom_text(aes(label=id),size=3) + 
    scale_fill_gradient(low="yellow",high="red") + 
    scale_color_gradient(low="yellow",high="red") + 
    theme_tern_rgbw() + 
    theme(legend.justification=c(0,1), legend.position=c(0,1)) + 
    guides(fill = guide_colorbar(order=1), 
     alpha= guide_legend(order=2), 
     color="none") + 
    labs( title= "Ternary Plot and Filled Contour", 
     fill = "Value, V",alpha="|V - 0|") 

#Save Plot 
ggsave("TernFilled.png") 

Можно ли получить линии сетки над контуром?

Update

Чтобы получить сетки на вершине я обновленный до ggtern 2.1.0. После обновления мне пришлось изменить stat_density2d -> stat-density_tern и geom_density2d -> geom_density_tern пару изменений, чтобы заставить код работать. Хотя он составил приведенный ниже рисунок, я не могу воспроизвести предыдущие графики, показанные выше. И я должен был добавить na.rm = TRUE для кода для работы

enter image description here

library(ggtern) 
#Orignal Data as per Question 
a <- c(0.1, 0.5,0.5, 0.6, 0.2, 0   , 0   , 0.004166667, 0.45) 
b <- c(0.75,0.5,0 , 0.1, 0.2, 0.951612903,0.918103448, 0.7875  , 0.45) 
c <- c(0.15,0 ,0.5, 0.3, 0.6, 0.048387097,0.081896552, 0.208333333, 0.10) 
d <- c(500,2324.90,2551.44,1244.50, 551.22,-644.20,-377.17,-100, 2493.04) 
df <- data.frame(a, b, c, d) 

#For labelling each point. 
df$id <- 1:nrow(df) 

#Build Plot 
ggtern(data=df,aes(x=c,y=a,z=b),aes(x,y,z)) + 
    stat_density_tern(geom="polygon", 
       n=400, 
       aes(fill=..level.., 
        weight=d, 
        alpha=abs(..level..)), 
       na.rm = TRUE) + 
    geom_density_tern(aes(weight=d,color=..level..), 
       n=400, 
        na.rm = TRUE) + 
    geom_point(aes(fill=d),color="black",size=5,shape=21) + 
    geom_text(aes(label=id),size=3) + 
    scale_fill_gradient(low="yellow",high="red") + 
    scale_color_gradient(low="yellow",high="red") + 
    # theme_tern_rgbw() + 
    theme(legend.justification=c(0,1), legend.position=c(0,1)) + 
    guides(fill = guide_colorbar(order=1), 
     alpha= guide_legend(order=2), 
     color="none") + 
    labs( title= "Ternary Plot and Filled Contour", 
     fill = "Value, V",alpha="|V - 0|") 

#Save Plot 
ggsave("TernFilled.pdf") 

Почему я не могу получить участки с предыдущей версией ggtern с обновленной версией? Что заменяется бинарностью?

+0

'theme_gridsontop()' –

ответ

1

Был внесен ряд изменений, так как этот код был установлен в Интернете.

Во-первых, и наиболее заметно в отношении вашего вопроса заключается в том, что плотность ядра по умолчанию теперь вычисляется на пространстве обратного логарифмического отношения, это может быть подавлено аргументом base='identity'.

Во-вторых, геометрия плотности_терминала идет по тому же пути, что и ggplot2, при использовании, если аргумент «h», как таковой, теперь не имеет значения.

Вот пример, который делает результат ближе к начальному ожиданию:

#Build Plot 
ggtern(data=df,aes(x=c,y=a,z=b),aes(x,y,z)) + 
    stat_density_tern(geom="polygon",color='black', 
        n=400,h=0.75,expand = 1.1, 
        base='identity', 
        aes(fill = ..level..,weight = d), 
        na.rm = TRUE) + 
    geom_point(color="black",size=5,shape=21) + 
    geom_text(aes(label=id),size=3) + 
    scale_fill_gradient(low="yellow",high="red") + 
    scale_color_gradient(low="yellow",high="red") + 
    theme_rgbw() + 
    theme(legend.justification=c(0,1), legend.position=c(0,1)) + 
    theme_gridsontop() + 
    guides(fill = guide_colorbar(order=1),color="none") + 
    labs( title= "Ternary Plot and Filled Contour",fill = "Value, V") 

example