我想在 y = 0 以外的位置开始绘制条形图。就我而言,我想在 y = 1 处开始绘制条形图。
举个例子,假设我geom_bar()使用 ggplot2 构建了恒等图表。
df <- data.frame(values = c(1, 2, 0),
labels = c("A", "B", "C"))
library(ggplot2)
ggplot(df, aes(x = labels, y = values, fill = labels, colour = labels)) +
geom_bar(stat="identity")
Run Code Online (Sandbox Code Playgroud)
现在,我不是问如何设置比例或轴限制。我希望代表小于 1 的值的条形图从 y = 1 开始向下流动。
它需要看起来像这样......但具有不同的 y 轴:
有什么建议吗?
您可以手动更改标签,如其他答案所示。然而,我认为从概念上讲,更好的解决方案是定义一个转换对象,根据要求转换 y 轴比例。使用这种方法,您实际上只是修改条形图的相对基线,并且您仍然可以像平常一样设置中断和限制。
df <- data.frame(values = c(1,2,0), labels = c("A", "B", "C"))
t_shift <- scales::trans_new("shift",
transform = function(x) {x-1},
inverse = function(x) {x+1})
ggplot(df, aes(x = labels, y = values, fill = labels, colour = labels)) +
geom_bar(stat="identity") +
scale_y_continuous(trans = t_shift)
Run Code Online (Sandbox Code Playgroud)
设置中断和限制:
ggplot(df, aes(x = labels, y = values, fill = labels, colour = labels)) +
geom_bar(stat="identity") +
scale_y_continuous(trans = t_shift,
limits = c(-0.5, 2.5),
breaks = c(0, 1, 2))
Run Code Online (Sandbox Code Playgroud)