我在ggplot中有一个图,其中x轴是实数,y轴是我数据的虚数值。例如:
client.rpc.make
所以情节如下:
现在我需要在图上添加阴影区域,包括以下函数范围:
dat=data.frame(real=c(0,0.5,0.7),imaginary=c(0.7,0.5,0.5))
ggplot(dat,aes(real,imaginary))+geom_point(size=7)+xlim(0,1)+ylim(0,1)
非常感谢
答案 0 :(得分:3)
这似乎更像是数学问题,而不是编程问题。首先确定这将追溯到哪个形状(并且坐标将不一定确定可以着色的区域,但在这种情况下它们确实如此),然后使用例如geom_polygon
绘制它们。
看起来你想要绘制一个以(0,0)为中心的半径为0.5的圆,然后将其填入。(你的等式是real^2 + imaginary^2 = a^2
来描述这个圆圈。事实a
从0到0.5只是意味着你想要每个圆从半径0到半径0.5。b
定义你追踪的圆圈的数量,但是一旦你达到2 * pi,你将得到一个完整的圆圈,所以过去这没有什么区别。)
所以你可以在这个圆圈上设置一组(x,y)坐标,例如。
b <- seq(0, 2*pi, by=0.1) # sin/cos are periodic, no point going past 2*pi
circ <- data.frame(x=0.5*cos(b), y=0.5*sin(b))
原图:
dat=data.frame(x=c(0,0.5,0.7),y=c(0.7,0.5,0.5))
p = ggplot(dat,aes(x,y))+geom_point(size=7)+xlim(0,1)+ylim(0,1)+xlab("real")+ylab("imaginary")
所以你需要的只是
p + geom_polygon(dat=circ)
您可以更改颜色等。现在你会注意到这个图中的圆圈看起来很奇怪 - 这是因为x和y限制从0到1限制,而圆圈覆盖的范围大于此值。如果你使用xlim
和ylim
ggplot将截断数据(即截断多边形的位使其看起来很奇怪),而不是简单地截断视图窗口。要解决此问题,请使用coord_cartesian
来限制轴而不是xlim
和ylim
。
ggplot(dat, aes(x, y)) + geom_point(size=7) +
coord_cartesian(xlim=c(0, 1), ylim=c(0, 1)) +
geom_polygon(dat=circ)