我使用VOUCHER_NO VOUCHER_DATE FROM TO DR CR BALANCE INTEREST
--------------------------------------------------------------------------------------------------------
1 01-01-2016 PARTY A JOBWORK 10000.00 -10000.00
2 05-01-2016 CASH PARTY A 5000.00 -5000.00 NEED INTEREST OF 10000.00 HERE
3 15-01-2016 CASH PARTY A 4000.00 -1000.00 NEED INTEREST OF 5000.00 HERE
绘制一些函数。我想在y轴上添加一个限制,但曲线将在实际限制之前停止。我怀疑ggplot将计算曲线上的一些点并插入其余的点,但如果下一个点高于限制,它将被省略。是否有可能强制ggplot实际绘制曲线到极限?
这样一条曲线的问题是,看起来曲线有意地在那里结束了。
以下是一个例子:
stat_function
答案 0 :(得分:2)
您遇到的问题是stat_y_continuous()
只是忽略超出指定范围的值。由于位于y = 1000
下方的最后一个点对于每条曲线的y
值没有相同的值,因此它们不会以相同的y
值结束。
有几种方法可以解决这个问题,具体取决于您的实际需求。一种可能性是使用coord_cartesian()
而不是scale_y_continuous()
。这将保留所有值,并简单地切断坐标轴:
p + stat_function(fun=radius, aes(color="10"), args=list(s=10)) +
stat_function(fun=radius, aes(color="20"), args=list(s=20)) +
stat_function(fun=radius, aes(color="30"), args=list(s=30)) +
stat_function(fun=radius, aes(color="40"), args=list(s=40)) +
coord_cartesian(ylim = c(0, 1000))
如您所见,这将绘制到曲线,直到它们到达绘图区域的上限范围。
如果您确实希望曲线以y = 1000
结束,则可以在stat_function
中绘制更多分数。这仍然意味着曲线不会完全以y = 1000
结束,但它们将如此接近该极限,以至于差异不再可见:
p + stat_function(fun=radius, aes(color="10"), args=list(s=10), n = 2000) +
stat_function(fun=radius, aes(color="20"), args=list(s=20), n = 2000) +
stat_function(fun=radius, aes(color="30"), args=list(s=30), n = 2000) +
stat_function(fun=radius, aes(color="40"), args=list(s=40), n = 2000) +
scale_y_continuous(limits = c(0, 1000))