我知道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())
答案 0 :(得分:0)
在ggplot2中,除非您明确更改绘图限制,否则您正在绘制的数据将决定绘图区域。您的a
变量(您在y轴上绘制的图表)仅涵盖50到100的范围。因此,除非您指定要在绘图中使用的其他y范围,否则所有你默认看到的。简而言之,解决此问题的正确方法是将limits
参数传递给scale_y_reverse
调用 - 这会告诉绘图绘制与数据覆盖的范围不同的范围。它看起来像:
scale_y_reverse(limits=c(100, 0))
(100首先是因为你正在扭转你的y轴。)
如果您在不使用 ymin
和ymax
参数的情节中添加该更改,那么您将获得所需的图表。
现在,如果ymin
和ymax
没有映射,为什么他们会更改你的情节?我认为原因是几何图形(如geom_point
)不会删除他们不了解的美学映射。这些映射将被传递到图层,如果图层了解映射,它将使用它们。基本上&#34; hacks&#34; y轴限制在图中,而没有正确指定它们。