geom_bar возиться со шкалой y_axis - PullRequest
0 голосов
/ 30 октября 2019

У меня есть некоторые данные по высоте, которые я хотел бы связать с климатическими категориями в наборе данных. Когда я пытаюсь построить график как график, чтобы увидеть распределение категорий по отметке, что-то в ggplot geom_bar преобразует масштаб по оси Y в некоторые странные значения. Вот пример:

# Example dataset
data_mountain_A <- data.frame(elevation=c(0,500,1000,1500,2000),
                              temperature=c(20,16,12,8,5),
                              name="A")
data_mountain_B <- data.frame(elevation=c(0,500,1000,1500,2000,2500,3000),
                              temperature=c(20,16,12,8,5,0,-5),
                              name="B")
data_merge <- rbind(data_mountain_A, data_mountain_B)

# Creates the temperature intervals
data_merge$temperature_intervals <- cut(data_merge$temperature,seq(-5,20,5))

# Fancy colors
colfunc <- colorRampPalette(c("white","light blue","dark green"))

# Plot
ggplot(data=data_merge, aes(fill=temperature_intervals, y=elevation, x=name)) + 
  geom_bar(stat="identity") +
  scale_fill_manual(values=colfunc(5))

А вот вывод, который я получаю:

Есть какие-нибудь намеки на то, что я делаю неправильно? Спасибо!

РЕДАКТИРОВАТЬ: Я обнаружил проблему. Он рассматривал высоту как диапазон, а не как единичную меру. Я исправил это, заменив абсолютные значения высоты на длину интервалов высоты.

1 Ответ

1 голос
/ 30 октября 2019

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

# Example dataset
data_mountain_A <- data.frame(elevation=c(500,500,500,500,500),
                              temperature=c(20,16,12,8,5),
                              name="A")
data_mountain_B <- data.frame(elevation=c(500,500,500,500,500,500,500),
                              temperature=c(20,16,12,8,5,0,-5),
                              name="B")
data_merge <- rbind(data_mountain_A, data_mountain_B)

# Creates the temperature intervals
data_merge$temperature_intervals <- cut(data_merge$temperature,seq(-5,20,5))

# Fancy colors
colfunc <- colorRampPalette(c("white","light blue","dark green"))

# Plot
ggplot(data=data_merge, aes(fill=temperature_intervals, y=elevation, x=name))+geom_bar(position="stack",stat="identity")+
  scale_fill_manual(values=colfunc(5))
...