英文:
Create another symbol in specific point in a line graph
问题
我想在线图的特定点上有另一个符号,其中x轴的值为1。在我的图中,线上的所有点都有圆圈作为符号,但我想在x轴的值为1的地方有一个三角形。
到目前为止,我找到了这个帖子,其中创建了一个X符号,但当我在我的代码中使用它时,它会在圆圈上创建一个X标记,而我希望有一个全新的符号。
以下是代码:
library(ggplot2)
wd = "路径/"
block.data = read.csv(paste0(wd, "block.data.csv"))
ggplot(data = block.data, aes(x = PSF, y = CC, group = 1)) +
  geom_line() +
  geom_point(size = 2) + 
  theme_bw() + 
  theme(panel.grid.major = element_blank(), panel.grid.minor = element_blank(),
        panel.background = element_blank(), axis.line = element_line(colour = "black")) + 
  scale_x_continuous(breaks = seq(0, 2, .2)) + 
  scale_y_continuous(breaks = seq(0.08, 23, .01))
和数据集:
structure(list(PSF = c(0, 0.2, 0.4, 0.6, 0.8, 1, 1.2, 1.4, 1.6, 
1.8, 2), CC = c(0.08278661, 0.1866827, 0.2051862, 0.218509, 0.2247673, 
0.2268575, 0.2265966, 0.22522, 0.223409, 0.2213272, 0.2192285
)), class = "data.frame", row.names = c(NA, -11L))
英文:
I would like to have another symbol in a specific point of line graphs where the x axis has value of 1. In my graph, all the points in the line have circle as a symbol, but I would like to have a triangle where the value of the x axis is 1.
So far, I found this post when it creates an X symbol, but when I use it on my code, it creates an X mark on top the circle while I want an entirely new symbol.
Here is the code:
library(ggplot2)
wd = "path/"
block.data = read.csv(paste0(wd, "block.data.csv"))
ggplot(data = block.data, aes(x = PSF, y = CC, group = 1)) +
  geom_line() +
  geom_point(size = 2) + 
  theme_bw() + 
  theme(panel.grid.major = element_blank(), panel.grid.minor = element_blank(),
        panel.background = element_blank(), axis.line = element_line(colour = "black")) + 
  scale_x_continuous(breaks = seq(0, 2, .2)) + 
  scale_y_continuous(breaks = seq(0.08, 23, .01))
And the dataset:
structure(list(PSF = c(0, 0.2, 0.4, 0.6, 0.8, 1, 1.2, 1.4, 1.6,
1.8, 2), CC = c(0.08278661, 0.1866827, 0.2051862, 0.218509, 0.2247673,
0.2268575, 0.2265966, 0.22522, 0.223409, 0.2213272, 0.2192285
)), class = "data.frame", row.names = c(NA, -11L))
答案1
得分: 1
一种选择是在 shape 映射上设置条件,即 PSF != 1,并使用 scale_shape_manual 设置所需的形状:
library(ggplot2)
ggplot(data = block.data, aes(x = PSF, y = CC, group = 1)) +
  geom_line() +
  geom_point(aes(shape = PSF != 1), size = 3) +
  scale_shape_manual(values = c(17, 16)) +
  theme_bw() +
  theme(
    panel.grid.major = element_blank(), panel.grid.minor = element_blank(),
    panel.background = element_blank(), axis.line = element_line(colour = "black")
  ) +
  scale_x_continuous(breaks = seq(0, 2, .2)) +
  scale_y_continuous(breaks = seq(0.08, 23, .01)) +
  guides(shape = "none")
<!-- -->
英文:
One option would be to map a condition, i.e. PSF != 1 on the shape aes and set your desired shape using scale_shape_manual:
library(ggplot2)
ggplot(data = block.data, aes(x = PSF, y = CC, group = 1)) +
  geom_line() +
  geom_point(aes(shape = PSF != 1), size = 3) +
  scale_shape_manual(values = c(17, 16)) +
  theme_bw() +
  theme(
    panel.grid.major = element_blank(), panel.grid.minor = element_blank(),
    panel.background = element_blank(), axis.line = element_line(colour = "black")
  ) +
  scale_x_continuous(breaks = seq(0, 2, .2)) +
  scale_y_continuous(breaks = seq(0.08, 23, .01)) +
  guides(shape = "none")
<!-- -->
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。


评论