我正在尝试使用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”。
答案 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')