“ggtern” 需要三元绘图网格线和轴刻度

"ggtern" Ternary plot gridlines and axis ticks needed

提问人:J.M 提问时间:3/11/2023 最后编辑:Allan CameronJ.M 更新时间:3/13/2023 访问量:550

问:

我正在尝试将网格线和轴刻度添加到三元图中。我能够调整轴的数值,但无法在图内获得轴刻度和网格。

下面是一个示例 R 代码:

library(ggplot2)
# Example data
x <- rnorm(100)
y <- rnorm(100)
z<-rnorm(100)
df <- data.frame(x, y, z)

# Create scatter plot with grid lines
ggtern(df, aes(x, y, z)) +
  geom_point() +
  theme_showgrid()+
  theme(panel.grid.major = element_line(color = "grey", linetype = "dashed"),
  panel.grid.minor = element_line(color = "grey", linetype = "dashed"))

我得到这个

Output Plot

我想要这个

Desired Plot

r ggplot2 三元 网格线 ggtern

评论

0赞 Dave2e 3/11/2023
它看起来像一个错误,这个问题中的代码:stackoverflow.com/questions/75138239/...也没有显示网格。也许最近的 ggplot 更新破坏了代码。您安装了哪个版本的 ggplot2?尝试下载以前版本的 ggplot,看看是否能解决问题。我会尝试“[email protected]”。
0赞 J.M 3/11/2023
感谢您的回复。以上代码来自 ggplot2_3.4.0。我尝试了旧版本的 ggplot2_3.3.6 包,它不支持 ggtern。我尝试安装旧版本的 ggtern,不幸的是,它没有运行。

答:

1赞 Quinten 3/12/2023 #1

您可以使用旧版本,并像这样使用:3.3.5ggplot2theme_bw

library(remotes)
install_version("ggplot2", version = "3.3.5", repos = "http://cran.us.r-project.org")
#> Downloading package from url: http://cran.us.r-project.org/src/contrib/Archive/ggplot2/ggplot2_3.3.5.tar.gz
library(ggplot2)
library(ggtern)

# Example data
x <- rnorm(100)
y <- rnorm(100)
z<-rnorm(100)
df <- data.frame(x, y, z)

# Create scatter plot with grid lines
ggtern(df, aes(x, y, z)) +
  geom_point() +
  theme_bw()

创建于 2023-03-11 使用 reprex v2.0.2

评论

0赞 J.M 3/12/2023
我尝试了 ggplot2 3.3.5 和 ggtern 3.3.5。它不起作用。
0赞 J.M 3/13/2023
该代码在 R 版本 4.0.3 的 rdrr.io/snippets 上完美运行。我尝试在我的 PC 上安装旧版本的 R,但该软件包不起作用。@Quinten
0赞 Quinten 3/14/2023
我使用的是 R 版本 4.2.2,所以也许您可以尝试使用该版本?另外,请确保您在干净的环境中尝试此操作。
0赞 J.M 3/13/2023 #2

这个脚本奏效了

library(remotes)

install_version("ggplot2", version = "3.3.5", repos = "http://cran.us.r-project.org")
#> Downloading package from url: http://cran.us.r-project.org/src/contrib/Archive/ggplot2/ggplot2_3.3.5.tar.gz
library(ggplot2)

install_version("ggtern", version = "3.3.5", repos = "http://cran.us.r-project.org")
library(ggtern)

# Example data
x <- rnorm(100)
y <- rnorm(100)
z<-rnorm(100)
df <- data.frame(x, y, z)

# Create scatter plot with grid lines
ggtern(df, aes(x, y, z)) +
  geom_point() +
  theme_bw()+theme_showgrid()