knitr设置out.height无法保持图片宽高比问题求助
解决ioslides中设置
out.height无法保持图片宽高比的问题 我之前也碰到过类似的坑,给你几个亲测有效的解决方案试试:
方案1:同时指定out.height和out.width='auto'
在chunk选项里加上out.width='auto',让浏览器自动根据设定的高度计算对应宽度,维持图片原生比例:
{r, out.height='50px', out.width='auto', dpi=200} knitr::include_graphics("rect_circ.png")
方案2:用fig.asp固定宽高比
fig.asp参数用来定义图片的宽高比(高度/宽度),先确认你原图的比例,比如原图宽是高的2倍,就设fig.asp=0.5,再配合out.height设置:
{r, out.height='50px', fig.asp=0.5, dpi=200} knitr::include_graphics("rect_circ.png")
方案3:直接通过HTML样式强制控制
因为ioslides本质是HTML演示文稿,我们可以给图片添加行内CSS样式,彻底避免拉伸问题:
{r, echo=FALSE} knitr::include_graphics("rect_circ.png", attr = list(style = "height:50px; width:auto; object-fit:contain;"))
object-fit:contain能确保图片完整显示在指定尺寸内,不会被挤压或拉伸。
可能的原因分析
你提到安装ggsn, ggmap, plotKML后出问题,大概率是这些包间接更新了knitr、htmltools或rmarkdown的依赖版本——即使卸载这几个包,已经更新的依赖包不会自动回滚,所以问题一直存在。如果上面的方案都无效,可以尝试回滚到之前版本的knitr(比如用devtools::install_version("knitr", version="你之前的可用版本"))。
内容的提问来源于stack exchange,提问作者Robatt
相关产品推荐
相关产品推荐

