ggplot清理堆积条形图上的y轴

时间:2018-12-11 14:02:15

标签: r ggplot2

我正在尝试使用ggplot绘制堆积的条形图,但我的y轴似乎不正确。

我正在使用以下代码:

ggplot(dat.m, aes(x = X__1, y = value, fill=variable)) +
  geom_bar(stat='identity')

我也尝试过scale_y_continuous(),但没有用。

如果将数字也放置在每个公司的每个条形图内,并按顺序绘制日期,那将是很棒的事情。

任何建议都会很棒!

编辑:我有一个更新的模型:

df$X__1
quarters <- c("Q1-16", "Q2-16", "Q3-16", "Q4-16", "Q1-17", "Q2-17", "Q3-17", "Q4-17", "Q1-18", "Q2-18", "Q3-18")
df$quarters <- as.yearqtr(quarters, format = "Q%q-%y")
#df$quarters <- as.Date(as.yearqtr(quarters, format = "Q%q-%y"))
# df$quarters <- quarters
df$X__1 <- NULL

barplot(as.matrix(df))

colnames(df)

library(tidyquant)
dat.m <- melt(df, id.vars = "quarters")
dat.m <- dat.m %>% arrange(quarters)
dat.m$value <- as.numeric(dat.m$value)
ggplot(dat.m, aes(x = quarters, y = value, fill = variable)) + 
  geom_bar(stat='identity') +
  geom_text(aes(y = value, label = value), size = 2) +
  theme_tq(base_size = 11, base_family = "")

数据:

df <- structure(list(X__1 = c("1Q '16", "2Q '16", "3Q '16", "4Q '16", 
"1Q '17", "2Q '17", "3Q '17", "4Q '17", "1Q '18", "2Q '18", "3Q '18"
), Samsung = c(81.19, 76.74, 71.73, 76.78, 78.77, 82.86, 85.61, 
74.03, 78.56, 72.34, 73.36), Apple = c(51.63, 44.4, 43, 77.04, 
51.99, 44.31, 45.44, 73.18, 54.06, 44.72, 45.75), Huawei = c(28.86, 
30.67, 32.49, 40.8, 34.18, 35.96, 36.5, 43.89, 40.43, 49.85, 
52.22), Xiaomi = c("-", "-", "14.93", "15.75", "30.92", "21.18", 
"26.85", "28.19", "28.5", "32.83", "33.22"), Oppo = c(15.89, 
18.11, 24.59, 26.7, 30.92, 26.09, 29.45, 25.66, 28.17, 28.51, 
30.56), Vivo = c("14", "14.24", "-", "-", "25.84", "24.32", "-", 
"-", "-", "-", "-"), Others = c(156.65, 159.19, 185.5, 195.06, 
125.88, 131.87, 159.55, 162.91, 153.78, 146.1, 153.96)), row.names = c(NA, 
-11L), class = c("tbl_df", "tbl", "data.frame"))

这些值不适合正确的位置。另外,我正在尝试在x轴上放置“ Q1,Q2,Q3,Q4”。

1 个答案:

答案 0 :(得分:1)

您的value变量是一个字符,应为数字;尝试:

dat.m$value <- as.numeric(dat.m$value)
ggplot(dat.m, aes(x = X__1, y = value, fill=variable)) + geom_bar(stat='identity')