ggplot2 中的并排水平图例
Side by side horizontal legends in in ggplot2
我想让我的 ggplot 图例并排显示在图下方,变量名称在符号上方,就像它们在 this 博客 post(第二个图)中一样. opts
函数现已失效,并且 theme
似乎没有复制其行为...
library("ggplot2")
ggplot(diamonds, aes(x = carat, y=price, shape = cut, group=interaction(cut, color), color=color)) +
geom_point() +
#opts(legend.direction = "horizontal", legend.position = "bottom")
#potential options, not all seem have an effect...
theme(legend.direction = "horizontal") +
theme(legend.position = "bottom") +
theme(legend.box = "vertical") +
theme(legend.title.align = 0)
...使用我的 MS 绘画技巧来说明所需的情节。
您需要指定theme(legend.box = "horizontal")
试试这个:
library("ggplot2")
ggplot(diamonds, aes(x = carat, y=price, shape = cut, group=interaction(cut, color), color=color)) +
geom_point() +
theme(legend.direction = "horizontal",
legend.position = "bottom",
legend.box = "horizontal"
)
@gjbel - 我认为要使图例标题位于符号上方,您需要将图例方向从水平更改为垂直,或者完全删除图例方向,因为默认为垂直:
library("ggplot2")
ggplot(diamonds, aes(x = carat, y=price, shape = cut, group=interaction(cut, color), color=color)) +
geom_point() +
theme(legend.direction = "vertical",
legend.position = "bottom",
legend.box = "horizontal"
)
或
library("ggplot2")
ggplot(diamonds, aes(x = carat, y=price, shape = cut, group=interaction(cut, color), color=color)) +
geom_point() +
theme(legend.position = "bottom",
legend.box = "horizontal"
)
根据之前关于 legend.box = "horizontal"
的建议,我发现您可以使用 scale_
函数指南中的 title.position = "top"
将图例标题置于顶部。必须为构成图例的每个变量定义这些,否则标题将在左侧。
ggplot(data = diamonds,
mapping = aes(x = carat, y = price, shape = cut,
group=interaction(cut, color), color=color)) +
geom_point() +
theme(legend.box = "horizontal",
legend.position="bottom") +
scale_shape(guide = guide_legend(title.position = "top")) +
scale_colour_discrete(guide = guide_legend(title.position = "top", nrow = 1))
您可以按照我在问题中的建议,使用 title.hjust = 0.5
将标题移到中心。但是,经过检查,这样做可能会使 reader 混淆哪个 colours/points 指的是哪个变量。
我想让我的 ggplot 图例并排显示在图下方,变量名称在符号上方,就像它们在 this 博客 post(第二个图)中一样. opts
函数现已失效,并且 theme
似乎没有复制其行为...
library("ggplot2")
ggplot(diamonds, aes(x = carat, y=price, shape = cut, group=interaction(cut, color), color=color)) +
geom_point() +
#opts(legend.direction = "horizontal", legend.position = "bottom")
#potential options, not all seem have an effect...
theme(legend.direction = "horizontal") +
theme(legend.position = "bottom") +
theme(legend.box = "vertical") +
theme(legend.title.align = 0)
...使用我的 MS 绘画技巧来说明所需的情节。
您需要指定theme(legend.box = "horizontal")
试试这个:
library("ggplot2")
ggplot(diamonds, aes(x = carat, y=price, shape = cut, group=interaction(cut, color), color=color)) +
geom_point() +
theme(legend.direction = "horizontal",
legend.position = "bottom",
legend.box = "horizontal"
)
@gjbel - 我认为要使图例标题位于符号上方,您需要将图例方向从水平更改为垂直,或者完全删除图例方向,因为默认为垂直:
library("ggplot2")
ggplot(diamonds, aes(x = carat, y=price, shape = cut, group=interaction(cut, color), color=color)) +
geom_point() +
theme(legend.direction = "vertical",
legend.position = "bottom",
legend.box = "horizontal"
)
或
library("ggplot2")
ggplot(diamonds, aes(x = carat, y=price, shape = cut, group=interaction(cut, color), color=color)) +
geom_point() +
theme(legend.position = "bottom",
legend.box = "horizontal"
)
根据之前关于 legend.box = "horizontal"
的建议,我发现您可以使用 scale_
函数指南中的 title.position = "top"
将图例标题置于顶部。必须为构成图例的每个变量定义这些,否则标题将在左侧。
ggplot(data = diamonds,
mapping = aes(x = carat, y = price, shape = cut,
group=interaction(cut, color), color=color)) +
geom_point() +
theme(legend.box = "horizontal",
legend.position="bottom") +
scale_shape(guide = guide_legend(title.position = "top")) +
scale_colour_discrete(guide = guide_legend(title.position = "top", nrow = 1))
您可以按照我在问题中的建议,使用 title.hjust = 0.5
将标题移到中心。但是,经过检查,这样做可能会使 reader 混淆哪个 colours/points 指的是哪个变量。