Измените размер меток X / Y в ggplot с необычными аргументами - PullRequest
0 голосов
/ 27 апреля 2020

Я стремлюсь увеличить размер меток на графике, что может быть немного необычно, потому что:

  • Я хотел нарисовать нулевые значения красным и использовал

    aes (color = mm3 == 0)) +

    scale_colour_manual(values = c( ИСТИНА = "red", ЛОЖЬ = 'black'))

до sh этого.

Я пробовал используя:

  • theme (axis.text = element_text (size = 12), axis.title = element_text (size = 14, face = "bold"))

это, казалось, не имело никакого эффекта. А также

  • theme_grey (base_size = 22)

Это увеличило размеры меток, но повлияло на окраску графика и добавило нежелательную легенду на график.

Это код:

   ggplot(Rodeococha, aes(x=`Age BP`,y=mm3)) +
    geom_bar(size=1,linetype=1,stat="identity", aes (color = mm3 == 0)) +
    scale_colour_manual(values = c(`TRUE` = "red",`FALSE` = 'black')) +
    scale_x_continuous(limits=c(0, 8000), breaks=c(0,1000, 2000, 3000, 4000, 5000, 6000, 7000, 8000)) +
    scale_x_reverse() +
    ggtitle("Charcoal Abundance") + 
  labs(y= "Volume (mm3/cm3)", x = "Time(yrs. BP)") +
         theme_ipsum()+
         theme(legend.position = "none") +
         coord_flip()`
  • Я не могу добавить изображение из-за правил сообщества Stack Overflow. И я не совсем уверен, как сделать минимальный воспроизводимый пример для этого. Так что, возможно, это помогает заметить, что это барплот на его стороне, с обратными значениями на начальной оси X. Он отображает +100 нулевых значений в красных точках и несколько пиков в черном. Надеюсь, у вас есть предложения!

1 Ответ

1 голос
/ 27 апреля 2020

Прежде всего, вы можете сделать минимальный воспроизводимый пример, поделившись некоторыми данными - даже фиктивным набором данных. Несмотря на это, вот пример, который, надеюсь, покажет вам два подхода, которые могут работать. Один более рекомендуется, чем другой (поскольку он использует некоторые принципы Tidy Data), но оба получают одинаковый результат.

Набор данных для обоих:

df <- data.frame(x=1:100, y=rnorm(100))
# basic point plot:
ggplot(df, aes(x,y)) + geom_point()

enter image description here

Допустим, наша цель состоит в том, чтобы построить тот же график, но закрасить точки так, чтобы отрицательные значения y были голубыми, а положительные значения y были красными. Как мы это делаем?

Поточная оценка данных

Вы можете оценить тот же тип, который вы предлагаете, с помощью своего кода. Это работает, но немного сложнее получить тот же результат и немного неуклюже. Это работает, хотя с использованием любого выражения в строке (если вы используете этот подход, я бы рекомендовал использовать aes(color= eval(...))), но это означает, что у вас больше работы с бэкэндом, используя scale_color_manual. Немного лучше использовать ifelse(), что позволит вам установить метки значений прямо в функции aes():

ggplot(df, aes(x,y)) +
    geom_point(aes(color=ifelse(y<0,'Small Stuff', 'Big Stuff'))) +
    scale_color_manual("Type of Stuff", values=list('Big Stuff'='red','Small Stuff'='blue'))

enter image description here

Обратите внимание, что функция scale_color_manual используется для установки названия легенды. Так как я знаю имена своих этикеток в результате использования ifelse(), я знаю, что я тоже могу правильно настроить свои цвета.

Метод аккуратных данных

Лучший подход основан на использовании dplyr, tidyr и вообще то, что называется Принципы аккуратности данных . Этот подход предполагает, что вы добавляете столбец в свой набор данных для последующего построения графика. Это намного «безопаснее», так что вы не смешиваете подготовку данных с построением графиков, и тогда будет намного проще строить графики позже. Здесь мы сначала настраиваем набор данных:

df$stuff <- ifelse(df$y < 0, 'Small Stuff', 'Big Stuff')

И затем функция построения графика выглядит следующим образом:

ggplot(df, aes(x,y)) +
    geom_point(aes(color=stuff)) +
    scale_color_manual("Type of Stuff", values=list('Big Stuff'='red', 'Small Stuff'='blue'))

В этом случае оба подхода имеют примерно одинаковое количество кода. В более сложных примерах подход Tidy, как правило, лучше, но здесь go с любым из маршрутов.

Применительно к вашей системе? ... Трудно сказать без совместного использования набора данных или графика. Это просто название легенды? Вы можете установить это в вашей функции scale_color_... или с помощью labs(color=....

...