如何强制R绘图y轴从y=0开始并保持颜色?

如何强制R绘图y轴从y=0开始并保持颜色?,r,plot,density-plot,R,Plot,Density Plot,我现在试着画一些数据的概率密度函数,我发现y=0和x轴之间的距离。我试图设置yaxs=“I”,但是x轴将变为灰色。有什么解决办法吗?谢谢这里有一个例子 set.seed(100) plot(density(rnorm(100)),xlab="",ylab="",main="") 如您所见,x轴的颜色将变为灰色。如何使它变黑? 如果指定ylim,它应该可以工作 d <- density(rnorm(100)) plot(d, xlab = "", ylab = "", ylim = c(

我现在试着画一些数据的概率密度函数,我发现y=0和x轴之间的距离。我试图设置
yaxs=“I”
,但是x轴将变为灰色。有什么解决办法吗?谢谢这里有一个例子

set.seed(100)
plot(density(rnorm(100)),xlab="",ylab="",main="")

如您所见,x轴的颜色将变为灰色。如何使它变黑?

如果指定ylim,它应该可以工作

d <- density(rnorm(100))
plot(d, xlab = "", ylab = "", ylim = c(0,max(d$y)), yaxs = "i")
如下所示,即从0开始并保持颜色

d <- density(rnorm(100))
plot(d, xlab = "", ylab = "", ylim = c(0,max(d$y)+.05), yaxs = "i",
     col.axis = "black")

d获得灰线的原因是,将对象类
density
传递到
plot
时,调用了
plot.density
plot.density
有一个
zero.line
参数,该参数设置为TRUE,并在默认情况下使用
aLine(h=0,lwd=0.1,col=“gray”)
绘制灰线(有关代码,请参见
stat::plot.density
)。您需要将
zero.line
设置为FALSE

plot(density(nums), yaxs="i", 
    xlab="", ylab="", main="",
    zero.line = FALSE)

如果希望在顶部留出比其他情况下更多的空间,您也可以控制上部的
ylim
。当然,您仍然需要
zero.line=FALSE
才能不绘制灰色的零线

plot(density(nums), yaxs="i",
    xlab="", ylab="", main="",
    zero.line = FALSE,
    ylim = c(0, 0.5)) # put whatever you want here instead 0.5

另一种解决方案是用另一条线覆盖灰线:

plot(density(nums), yaxs="i",
    xlab="", ylab="", main="")
abline(h = 0)

我实际上不能重现你的错误<代码>绘图(密度(rnorm(100)),yaxs=“i”,xlab=“”,ylab=“”,main=“”)
为我提供了一个正常的黑色轴。您好,我刚刚复制了您的代码并运行,但x轴仍然是灰色的。我使用的是R版本3.3.1。谢谢。这可能很简单,但您是否尝试过
par(col.axis=“black”)
?它可能是您以前设置的全局参数?我没有设置任何有关轴颜色的全局参数,也没有尝试过
par(col.axis=“black”)
。谢谢。我没有投你反对票,但你的两个解决方案都不适合我。我不知道你为什么没有得到灰线,默认情况下灰线显示为
stats:::plot.density
非常感谢。你太棒了
zero.line=FALSE
有效,但设置
ylim
无效。谢谢。
plot(density(nums), yaxs="i",
    xlab="", ylab="", main="",
    zero.line = FALSE,
    ylim = c(0, 0.5)) # put whatever you want here instead 0.5
plot(density(nums), yaxs="i",
    xlab="", ylab="", main="")
abline(h = 0)