【发布时间】:2017-10-09 15:16:34
【问题描述】:
我知道 geom_point 没有 ymin 和 ymax 的映射,但是当我不使用它们时,它并没有给出我期望的数字。尽管如此,当使用 ymin 和 ymax 时,我得到了我想要的数字,但我收到“忽略未知美学:ymin,ymax”的警告。我不知道应该怎么做才能避免警告但得到我想要的情节。
这是示例数据集:
ab <- data.frame(a = seq(50,100,by=10), b=LETTERS[1:6])
没有 ymin 和 ymax 但不是我期望的数字:
library("ggplot2")
ggplot(ab) +
scale_x_discrete() +
scale_y_reverse() +
geom_rect(xmin=Inf, xmax = -Inf, ymin = 0 - 50, ymax = 0, fill="lightblue") +
geom_rect(xmin=Inf, xmax = -Inf, ymin = 0 - 82, ymax = 0 - 50, fill="lightgreen") +
geom_rect(xmin=Inf, xmax = -Inf, ymin = -100, ymax = 0 - 80, fill="darkgreen") +
geom_vline(xintercept=1:6, size=1.5, color="white") +
geom_hline(yintercept=c(50, 80, 100), size=0.1, color="white") +
geom_point(aes(x=b, y=a),
shape=21, fill="#FF9933", size=10, position="identity") +
ggtitle("Test") +
coord_polar() +
theme(
plot.title=element_text(face = "bold", color = "black", size = 17, ),
panel.background=element_rect(fill = c("white")),
panel.grid=element_blank(),
panel.grid.major=element_line(size=2),
panel.grid.minor.y=element_blank(),
axis.text.x=element_text(vjust=5),
axis.text=element_text(size = 12, color = "black", face = "bold"),
axis.text.y=element_blank(),
axis.title.x=element_blank(),
axis.title.y=element_blank(),
axis.ticks=element_blank())
geom_point 中的 ymin 和 ymax(带有警告的预期输出):
ggplot(ab) +
scale_x_discrete() +
scale_y_reverse() +
geom_rect(xmin=Inf, xmax = -Inf, ymin = 0 - 50, ymax = 0, fill="lightblue") +
geom_rect(xmin=Inf, xmax = -Inf, ymin = 0 - 82, ymax = 0 - 50, fill="lightgreen") +
geom_rect(xmin=Inf, xmax = -Inf, ymin = -100, ymax = 0 - 80, fill="darkgreen") +
geom_vline(xintercept=1:6, size=1.5, color="white") +
geom_hline(yintercept=c(50, 80, 100), size=0.1, color="white") +
geom_point(aes(x=b, y=a, ymin = 0, ymax = 100),
shape=21, fill="#FF9933", size=10, position="identity") +
ggtitle("Test") +
coord_polar() +
theme(
plot.title=element_text(face = "bold", color = "black", size = 17, ),
panel.background=element_rect(fill = c("white")),
panel.grid=element_blank(),
panel.grid.major=element_line(size=2),
panel.grid.minor.y=element_blank(),
axis.text.x=element_text(vjust=5),
axis.text=element_text(size = 12, color = "black", face = "bold"),
axis.text.y=element_blank(),
axis.title.x=element_blank(),
axis.title.y=element_blank(),
axis.ticks=element_blank())
【问题讨论】:
-
我不太确定为什么会这样,但以某种方式添加
ymin=0和ymax=100可以确保 y 比例从 100 变为 0,即使geom_point不占用ymax或ymin美学。如果您删除这些参数并将scale_y_reverse()更改为scale_y_reverse(limits=c(100,0)),您将获得相同的结果而不会发出警告。这将是设置绘图 y 轴范围的“标准”方式。