我有这个条形图。
我使用以下代码生成图形:
# Speedup Graph
p <- ggplot(speedup_df, aes(x= benchmark, y = speedup, fill = factor(technique))) +
geom_bar(stat = "identity", position = "dodge", width = 0.7) +
scale_fill_discrete(name="Technique", labels=c("No Compression", "Compression Perfect", "Compression BDI", "Precompression BDI Hash",
"Precompression BDI Similarity", "Compression CPack", "Precompression CPack Hash",
"Precompression CPack Similarity", "Compression FPCD", "Precompression FPCD Hash",
"Precompression FPCD Similarity")) +
labs(title = plot_name, y="Speedup", x="Benchmarks") +
coord_cartesian(ylim=c(min(speedup_df$speedup), max(speedup_df$speedup))) +
theme(axis.text.x = element_text(angle=45, size=10, hjust=1)) +
geom_text(data=speedup_df, aes(label=sprintf("%0.4f", round(speedup, digits = 4)), fontface = "bold"), size = 5, position=position_dodge(width=0.7),
hjust=0.5, vjust=-0.7)
我想在条之间的任意点插入间隙。例如,我想在所有“ BDI”栏之前和之后都留有空隙。我尝试在scale_fill_discrete中使用中断,但出现错误,它们必须与标签相同。
答案 0 :(得分:1)
如果您提供一个可复制的示例,我可以站在我这一边进行测试。这个想法是要更改width
中的geom_bar
和width
中的position_dodge()
。在以下示例中,您可能需要使用mtcars
数据来调整值。
library(ggplot2)
# without space
ggplot(mtcars, aes(x= 1, y = mpg, fill = factor(cyl))) +
geom_bar(stat = "identity", position= "dodge", width = 0.7)
# add space
ggplot(mtcars, aes(x= 1, y = mpg, fill = factor(cyl))) +
geom_bar(stat = "identity", position = position_dodge(width=0.9), width = 0.7)
由reprex package(v0.3.0)于2020-01-17创建
可能有几种方法可以在特定钢筋之间插入间隙。一种直观的方法是使用add_row()
到几行空白并重新设置levels
:
library(tidyverse)
df <- data.frame(x = c("a", "b", "c", "d", "e"),
y = c(1, 2, 5, 6, 3))
df <- add_row(df, x = c(" ", " "), y = c(NA))
df$x <- factor(df$x, levels = c("a", " ", "b", "c", "d", " ", "e"))
ggplot(df, aes(x= x, y = y, fill = x)) +
geom_bar(stat = "identity", na.rm = TRUE,
position = "dodge", width = 1) +
scale_fill_manual(values=c("red", "white", "green","blue","maroon",
"white","navy"))
由reprex package(v0.3.0)于2020-01-18创建