Удаление промежуточных лет между 1990 и 2010 годами из оси х - PullRequest
0 голосов
/ 20 марта 2019

Я новичок в R, поэтому заранее прошу прощения, если это очень простой вопрос.

Я строю рамочный график, показывающий тип баров и их различные количества в 1990 и 2010 годах.здесь две проблемы:

  1. Я хочу убрать 1980, 2000, 2020 годы. Я пытался использовать scale_x_discrete("1990","2010"), но, похоже, это не работает.
  2. В легенде внизу перечислены названия баров.Тем не менее, я хочу заменить . пробелами.Например, изменив mid.channel.bar на Mid-channel bar.

library(ggplot2)
library(tidyr)
library(reshape2)

barCount <- tibble::tribble(
             ~Year, ~Lateral.bar, ~Bar.accreted.to.island, ~Mid.channel.bar,
              1990,          105,                     134,               62,
              2010,          102,                     189,              102
             )

df2 <- melt(barCount, id="Year")
barPlot <- ggplot(df2, aes(Year,value)) +
  geom_bar(aes(fill=variable),position="dodge",stat="identity") +
  labs(y="Quantity",fill="")+
  scale_fill_manual("Legend",values=c("Lateral.bar"="khaki4","Bar.accreted.to.island"="Khaki2",
                    "Mid.channel.bar"="ivory"))

#modifying axis 
barPlot <- barPlot + theme(
  axis.title.x = element_blank(),
  axis.title.y = element_text(size=14),
  axis.text.x = element_text(size=14),
  legend.position="bottom"
  )

barPlot

1 Ответ

2 голосов
/ 20 марта 2019

Если вы рассматриваете столбец года как фактор, ggplot предоставит вам график, который вы хотите. Плюс str_replace_all в столбце переменной поменяет местами пробелы:

library(reshape2)
library(tidyverse)
barCount <- tibble::tribble(
~Year, ~Lateral.bar, ~Bar.accreted.to.island, ~Mid.channel.bar,
1990,          105,                     134,               62,
2010,          102,                     189,              102
)


df2 <- melt(barCount, id="Year") %>% 
  mutate(
    Year = Year %>% as.factor(),
    variable = variable %>% str_replace_all("\\.", " ")
  )
barPlot <- ggplot(df2, aes(Year,value)) +
geom_bar(aes(fill=variable),position="dodge",stat="identity") +
labs(y="Quantity",fill="")+
scale_fill_manual("Legend",values=c("Lateral bar"="khaki4","Bar accreted to island"="Khaki2","Mid channel bar"="ivory"))

#modifying axis 
barPlot <- barPlot + theme(
axis.title.x = element_blank(),
axis.title.y = element_text(size=14),
axis.text.x = element_text(size=14),
legend.position="bottom"

)

barPlot
...