Как изменить количество тиков и применить многоцветный градиент в ggtern?

Я экспериментировал с этим кодом, и мне показалось интересным, что количество тиков изменилось когда я замышлял. В моем случае я получаю это:

введите здесь описание изображения

Используемый код такой же, как и в 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")

Я пытался увеличить количество тиков до 11, но безуспешно. Как указать количество тактов?

Многоцветный градиент

И можно ли использовать многоцветный градиент вместо двухцветного градиента? Я попытался установить

scale_fill_gradient(low="yellow",high="red")

to

scale_fill_gradient(low="blue", mid = "yellow",  high="red")

но изменений не было. Как это сделать?


person Tom Kurushingal    schedule 21.05.2015    source источник
comment
@Николас Гамильтон предложил вам использовать scale_fill_gradient2. Обратите внимание на 2.   -  person Henrik    schedule 21.05.2015


Ответы (1)


ggtern 2.0.1, который был опубликован на CRAN пару дней назад после полной перезаписи пакета для совместимости с ggplot2 2.0.0. Обзор новых функций в ggtern 2.0.X можно найти здесь:

Итак, что касается количества тиков, если они явно не указаны через аргумент «разрывы» в каждом scale_X_continuous(...) [где X = T, L или R] или через limit_tern(...), где один и тот же аргумент «разрывы» передается всем трем непрерывные шкалы, ggtern попытается сделать наилучшее предположение.

Рассмотрим следующий набор примеров:

#Set up a plot
df   = data.frame(x=1,y=1,z=1)
base = ggtern(data=df,aes(x,y,z)) + geom_point()

#1. The default case, best guess.
base 

#2. A reduced scale limit, with best guess.
base + limit_tern(.5,.5,.5)

#3. Manual breaks passed to all three ternary scales
base + limit_tern(breaks = seq(0,1,by=0.05))

#4. Manual breaks passed to all three ternary scales, under limited region
base + limit_tern(.5,.5,.5,breaks = seq(0,1,by=0.05))

#5. Manual breaks passed to a single ternary scale, the other two are done by best guess
base + scale_T_continuous(breaks  = seq(0,1,by=0.05))
person Nicholas Hamilton    schedule 18.01.2016