gpt4 book ai didi

r - 调整水平图例中文本之间的间距

转载 作者:行者123 更新时间:2023-12-04 00:06:37 25 4
gpt4 key购买 nike

我有一个带有水平图例的情节:

 legend("bottomleft", inset = c(0, -0.3), bty = "n",
x.intersp=0, xjust=0,yjust=0,
legend=c("AAPL", "Information Technology",
"Technology Hardware and Equipment", "S&P 500"),
col=c("black", "red", "blue3", "olivedrab3"),
lwd=2, cex = 0.5, xpd = TRUE, ncol = 4)

问题是图例的第一项“AAPL”和第二项“信息技术”之间存在巨大的间距。

我尝试使用 txt.width() 调整间距,但它根本不起作用。或者也许我没有按照指示使用此选项。这就是我介绍 txt.width 的方式里面的选项 legend() :
txt.width = c(2,1,1)

我不确定是否需要提及,但我的 x 轴是日期轴!

是否有一种简单的方法可以自定义图例中文本之间的空格?

谢谢!

最佳答案

text.width可以让您控制图例中每列的宽度,但这并不简单。基本上,text.width是一个向量,它将乘以另一个与您的图例字符串向量一样长的向量。第二个向量的元素是来自 0 的整数至 length(legend)-1 .见 code to legend() 对于血腥的细节。重要的是你能想到text.width的这个产品和第二个向量,大约是图例元素的 x 坐标。然后如果你知道你想要哪个 x 坐标,你就可以计算出需要在 text.width 中传递的内容。争论。

legtext <- c("AAPL", "Information Technology", 
"Technology Hardware and Equipment", "S&P 500")
xcoords <- c(0, 10, 30, 60)
secondvector <- (1:length(legtext))-1
textwidths <- xcoords/secondvector # this works for all but the first element
textwidths[1] <- 0 # so replace element 1 with a finite number (any will do)

然后你的最终代码可能看起来像这样(除了我们不知道你的原始绘图数据或参数):
plot(x=as.Date(c("1/1/13","3/1/13","5/1/13"), "%m/%d/%y"), y=1:3, ylim=c(0,3))

legend(x="bottomleft", bty = "n", x.intersp=0, xjust=0, yjust=0,
legend=legtext,
col=c("black", "red", "blue3", "olivedrab3"),
lwd=2, cex = 0.5, xpd = TRUE, ncol = 4,
text.width=textwidths)

正如安德烈席尔瓦所提到的,您在 xcoords 中需要的值和 textwidths将取决于图的当前大小、为 x 轴指定的值范围等。

另外, secondvector如果每列有多个元素,上面的内容看起来会有所不同。例如,对于每列有两个图例元素的两列, secondvector == c(0,0,1,1) .

关于r - 调整水平图例中文本之间的间距,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21262472/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com