Масштабируйте более одного аргумента цвета в том же сюжете [дубликат]

Для 32-битных поплавков IEEE аргументация состоит в том, что точность должна быть не менее хорошей, чем 24-битная фиксированная точка.

Почему именно 24 бита, я не знаю, но кажется разумный компромисс.

Я полагаю, что хороший «круглый» номер (mantissa + sign = 3 bytes, exponent = 1 byte) также может сделать реализации более эффективными.

9
задан Community 23 May 2017 в 11:53
поделиться

1 ответ

Не думаю, что ggplot2 позволит вам дважды изменить цвет и обновить легенду. Кажется, я вспоминаю, что вы не можете дважды изменить scale_color_manual в сюжете. Я не смог найти эту веб-страницу, но это сообщение касается темы. Я также попытался использовать предложения в этой записи , но это не сработало. Вероятно, потому что мы пытаемся смешать geoms (но это только предположение).

Я могу получить либо линии регрессии:

part1 <- 
    ggplot(currDT,
           aes(x = EFP, y = SAPT), na.rm = TRUE) +
    stat_smooth(method = "lm", formula = y ~ x + 0, 
                aes(linetype = Halide, colour = Halide), 
                alpha = 0.8, size = 0.5, level = 0) +
    scale_linetype_manual(name = "", values = c("dotdash", "F1"),
                          breaks = c("hal", "non-hal"), 
                          labels = c("Halides", "Non-Halides")) +
    scale_color_manual(name = "", values = c("red", 'blue'),
                       labels = c("Halides", "Non-Halides"))
    ggsave('part1.jpeg', part1)

enter image description here [/g2] Или данные указывают на график:

part2 <-           
    ggplot(currDT,
           aes(x = EFP, y = SAPT), na.rm = TRUE) +     
    geom_point(aes(color = Anion, shape = Cation),  size = 3, alpha = 0.4) +
    scale_linetype_manual(name = "", values = c("dotdash", "F1"),
                          breaks = c("hal", "non-hal"), 
                          labels =c("Halides", "Non-Halides")) +
    scale_colour_manual(values = my_col_scheme)   
    ggsave('part2.jpeg', part2)                      

enter image description here [/g3] Но не оба:

both <- 
    ggplot(currDT,
           aes(x = EFP, y = SAPT), na.rm = TRUE) +
    stat_smooth(method = "lm", formula = y ~ x + 0, 
                aes(linetype = Halide, colour = Halide), 
                alpha = 0.8, size = 0.5, level = 0) +
    scale_linetype_manual(name = "", values = c("dotdash", "F1"),
                      breaks = c("hal", "non-hal"), labels = c("Halides", "Non-Halides")) +
    geom_point(aes(color = Anion, shape = Cation),  size = 3, alpha = 0.4) +
    scale_colour_manual(values = my_col_scheme)                    
ggsave('both.jpeg', both)   

enter image description here [/g4]

Я думаю, вам нужно будет добавить каждое руководство по каждой строке. Надеюсь, кто-то еще знает, как ответить на это, но я не думаю, что @hadley позволяет изменять оба цвета. К счастью, вы data.table, поэтому это должно быть легко сделать: -)

Комментировать кому-то еще, пытаясь решить эту проблему. Надеюсь, мой частичный ответ поможет вам ответить на этот вопрос. Кроме того, мой третий рисунок показывает, как ggplot2 не получает цвет легенды, как это хочет OP. В качестве другого совета вы можете попробовать играть с легендарными опциями.

4
ответ дан Community 15 August 2018 в 22:09
поделиться
  • 1
    напечатайте part 1 с галоидной / негалоидной легендой о правильных цветах в нужном месте, затем напечатайте both с отключенной легендой, прозрачным фоном и легендами катиона и галида, расположенными так, чтобы они не перекрывали первая легенда? – Hsif 30 April 2015 в 03:32
  • 2
    спасибо за ваши усилия! да, это было в основном там, где я закончил, прежде чем я задал этот вопрос; кстати, какие цвета ggplot2 используются для линий? он, кажется, не использует my_col_scheme @geryan, вы предлагаете создать два сюжета, а затем наложить их один поверх другого? Может ли это быть сделано в самом R или мы будем смотреть на внешнюю программу манипуляции изображениями? – Samuel Tan 30 April 2015 в 03:38
  • 3
    @SamuelTan, да, это то, что я предлагал, но я попробовал это с некоторыми из своего собственного кода и не могу заставить его работать, извините. – Hsif 30 April 2015 в 03:56
  • 4
    Да. Я забыл указать вам цветовой код. Я менял его и забыл добавить его обратно. – Richard Erickson 30 April 2015 в 12:24
  • 5
    Отличная работа! Я впечатлен количеством взлома, который вам нужно сделать, чтобы ggplot дал вам сюжет, который вы получили. Я попытался использовать fill, но не понял, что мне также пришлось изменить color на NA. – Richard Erickson 30 April 2015 в 12:27
  • 6
    Благодарю. Большая часть работы заключалась в борьбе с легендой. Вам нужно будет включить colour=NA, если вам не нужна граница вокруг точек. Если вы не против границы, вы можете опустить colour=NA и получить черную рамку, или вы можете установить цвет в соответствии с тем, что вы предпочитаете. – eipi10 1 May 2015 в 01:09
  • 7
    Ура! Это было довольно умно, используя fill вместо colour. Я бы не играл с guides достаточно долго, чтобы получить легенду, которую хочу. Это делает работу. На данный момент, по крайней мере, потому что я всегда открыт для других методов. – Samuel Tan 1 May 2015 в 05:39
  • 8
    Интересно, что использование fill вместо colour для geom_point работает, только если вы также укажите shape внутри или вне aes. – p00ya 15 December 2017 в 02:37
  • 9
    Да, вы должны использовать маркер точки, который имеет отдельную границу и заливку. Форма 21-25 имеет эту характеристику. В моем ответе см. Первый абзац и пункт 4. – eipi10 15 December 2017 в 02:48
Другие вопросы по тегам:

Похожие вопросы: