R, ggplot2: изменить значение заливки на сдержанный цвет вместо градиента - PullRequest
0 голосов
/ 07 апреля 2019

У меня есть следующие данные:

enter image description here

Текст относится к описательной части, mi - это счет определенной функции, а shi - это счетдругой функции.У меня они в кадре данных следующим образом.Я не уверен, как вручную воссоздать этот фрейм данных с векторами значений, поэтому заранее прошу прощения, что это не так воспроизводимо, как могло бы быть.

test <- as.data.frame(read_excel("plotTEST.xlsx"))

Мне нужен график, на которомОсь X - это каждый текст, а у показывает количество обоих объектов.Я хочу приблизить что-то вроде этого, как показано здесь или здесь .

enter image description here

Используя эти примерыЯ собрал воедино следующее:

ggplot(data=test, aes(x=text, y=mi, fill=shi)) + geom_bar(stat="identity")

И благодаря множеству настроек и нескольких итераций, это самый чистый результат, который я получил:

enter image description here

Градиент, по-видимому, используется по умолчанию, несмотря на то, что я попытался следовать коду в связанных примерах, и они не дают конкретной информации о выборе цвета.

Это градиент, а не дискретные цвета, какМогу ли я получить сдержанные цвета для счетчиков ми и ши?

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

1 Ответ

1 голос
/ 07 апреля 2019

Вы можете сделать это следующим образом:

# Your data
text <- c("Swollen River", "Anaconda caught", "Chikwan speaks", "Lake explodes","Swollen River", "Anaconda caught", "Chikwan speaks", "Lake explodes")
values  <- c(5,18,45,98, 0,9,33,23)
type <- c("mi","mi","mi","mi","shi","shi","shi","shi")
df <- data.frame("text"=text, "values"=values, "type"=type)

# dataframe in long format:
#             text values type
# 1   Swollen River      5   mi
# 2 Anaconda caught     18   mi
# 3  Chikwan speaks     45   mi
# 4   Lake explodes     98   mi
# 5   Swollen River      0  shi
# 6 Anaconda caught      9  shi
# 7  Chikwan speaks     33  shi
# 8   Lake explodes     23  shi

# Plot
ggplot(data=df, aes(x=text, y=values, fill=type)) + geom_bar(stat="identity")

enter image description here

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...