Как придать столбцам гистограммы определенного цвета в зависимости от значения элементов ggplot r - PullRequest
0 голосов
/ 17 марта 2019

У меня есть датафрейм, состоящий из моделей автомобилей в странах со связанным значением, которое выглядит следующим образом:

Car      Country      Value
Audi A6  US           23
Audi A6  UK           12
Audi A6  DE           19
BMW X5   UK           8
BMW X5   DE           5
etc

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

Я знаю, как создать гистограмму, используя ggplot:

qplot(beta_0jk[data$Value], 
  geom="histogram", fill=I("lightblue"))

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

Ответы [ 2 ]

1 голос
/ 17 марта 2019

Вообще-то, я бы настоятельно рекомендовал поискать чит-листы для R, которые очень удобно размещены здесь

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

Проблема
Сначала вам нужно понять идею, лежащую в основе гистограмм, гистограммы работают, когда у вас нет ценности и вы хотитерассчитать количество или плотность некоторых характеристик.В вашем случае вам просто нужны простые точки для представления значений, которые у вас уже есть в вашем фрейме данных.Это легко сделать с некоторым пониманием ggplot.

Эстетика
Когда вы используете функцию ggplot (), она принимает некоторые основные аргументы.

ggplot(data = NULL, mapping = aes(), ..., environment = parent.frame())  

Данные, которые выОбеспечить это всего лишь бета_0jk данных.Сопоставление соответствует элементам, которые вы определяете своими столбцами, поэтому вам необходимо указать их:

x - что-то для группировки по вашим значениям, я бы сказал, что вы захотите«Car» здесь, чтобы указать модель
y - это должно быть ясно - «Value» - это измеряемая вами переменная, поэтому вы выбрали ее для представления значения оси y
col -это снова GROUP, но она работает не так, как x - она ​​делает разные цвета для каждой указанной вами группы.Чтобы использовать его, вы должны убедиться, что ваш столбец имеет коэффициент

Реализация

ggplot2::ggplot(beta_0jk,ggplot2::aes(
  x = Car,
  y = Value,
  col = Country)
) + geom_jitter()

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

1 голос
/ 17 марта 2019

Это то, что вы ищете?Чтобы все бары были одинаковой ширины, я должен был заполнить data дополнительной строкой, поскольку Country == 'US' при Car == 'BMW X5' отсутствует.Канал подготовки данных %>% был полностью вдохновлен в этом ответе .

library(tidyverse)
library(ggplot2)


data %>% 
  spread(key = Car, value = Value, fill = NA) %>% 
  gather(key = Car, value = Value, -Country) %>% 
  ggplot(aes(x = Car, y = Value, fill = Country)) +
  geom_col(position = position_dodge())

Данные.

data <- read.table(text = "
Car      Country      Value
'Audi A6'  US           23
'Audi A6'  UK           12
'Audi A6'  DE           19
'BMW X5'   UK           8
'BMW X5'   DE           5
", header = TRUE)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...