gpt4 book ai didi

r - 在离散 x 轴上指定次要网格线/一些虚线网格线

转载 作者:行者123 更新时间:2023-12-02 03:04:54 25 4
gpt4 key购买 nike

我正在尝试创建一个用于发布的图形,并且我所在领域的绘图约定对于此信息(绘制听力图)是非标准的。

一些示例数据:

subsetAudio <- 
structure(list(Subject = c(1L, 2L, 3L, 1L, 2L, 3L, 1L, 2L, 3L,
1L, 2L, 3L, 1L, 2L, 3L, 1L, 2L, 3L, 1L, 2L, 3L, 1L, 2L, 3L, 1L,
2L, 3L, 1L, 2L, 3L, 1L, 2L, 3L, 1L, 2L, 3L, 1L, 2L, 3L, 1L, 2L,
3L, 1L, 2L, 3L, 1L, 2L, 3L, 1L, 2L, 3L, 1L, 2L, 3L, 1L, 2L, 3L,
1L, 2L, 3L), Frequency = c(250, 250, 250, 500, 500, 500, 750,
750, 750, 1000, 1000, 1000, 1500, 1500, 1500, 2000, 2000, 2000,
3000, 3000, 3000, 4000, 4000, 4000, 6000, 6000, 6000, 8000, 8000,
8000, 250, 250, 250, 500, 500, 500, 750, 750, 750, 1000, 1000,
1000, 1500, 1500, 1500, 2000, 2000, 2000, 3000, 3000, 3000, 4000,
4000, 4000, 6000, 6000, 6000, 8000, 8000, 8000), Ear = structure(c(1L,
1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L,
1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 2L, 2L, 2L,
2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L,
2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L), .Label = c("Left",
"Right"), class = "factor"), dBHL = c(10L, 30L, 20L, 10L, 45L,
20L, 25L, 50L, 20L, 30L, 45L, 25L, 45L, 45L, 60L, 50L, 45L, 60L,
55L, 45L, 60L, 60L, 50L, 60L, 65L, 70L, 65L, 65L, 75L, 70L, 30L,
35L, 25L, 10L, 45L, 25L, 30L, 50L, 25L, 30L, 50L, 30L, 40L, 45L,
45L, 50L, 55L, 60L, 60L, 55L, 60L, 60L, 60L, 65L, 65L, 75L, 60L,
65L, 85L, 65L)), .Names = c("Subject", "Frequency", "Ear", "dBHL"
), row.names = c(1L, 2L, 3L, 11L, 12L, 13L, 21L, 22L, 23L, 31L,
32L, 33L, 41L, 42L, 43L, 51L, 52L, 53L, 61L, 62L, 63L, 71L, 72L,
73L, 81L, 82L, 83L, 91L, 92L, 93L, 101L, 102L, 103L, 111L, 112L,
113L, 121L, 122L, 123L, 131L, 132L, 133L, 141L, 142L, 143L, 151L,
152L, 153L, 161L, 162L, 163L, 171L, 172L, 173L, 181L, 182L, 183L,
191L, 192L, 193L), class = "data.frame")

使这变得困难的是,由于值的间距,必须在离散的 x 尺度上输入“频率”作为一个因子。

标记所有离散点:
ggplot(subsetAudio, aes(x = factor(Frequency), y = dBHL, group = Subject)) +
theme_bw() +
facet_grid(~ Ear) +
geom_line(linetype = "dashed",size=0.8) +
scale_x_discrete(name = "Frequency (kHz)",labels=c("0.25", "0.5", "0.75", "1", "1.5", "2", "3", "4", "6", "8"), position = "top") +
scale_y_reverse(name = "Level (dB HL)", lim=c(120,-10),minor_breaks = seq(0 ,120, 5), breaks = seq(-10, 120, 10)) +
theme(panel.grid.major = element_line(colour = "black",size=0.1)) +
theme(panel.grid.minor = element_line(colour = "black",linetype="dashed",size=0.1)) +
theme(strip.text.x = element_blank()) +
geom_text(data=data.frame(x = 1.5, y = -6.25, label=c("a)", "b)"),
Ear=c("Left","Right")), aes(x,y,label=label), size=8,inherit.aes=FALSE)

这会产生下图:
enter image description here

这里的问题是我需要将 0.75、1.5、3 和 6 处的 x 比例网格线设为虚线。

我尝试只绘制“主要”网格线(.25、5、1、2、4、8):
ggplot(subsetAudio, aes(x = factor(Frequency), y = dBHL, group = Subject)) +
theme_bw() +
facet_grid(~ Ear) +
geom_line(linetype = "dashed",size=0.8) +
scale_x_discrete(name = "Frequency (kHz)",breaks=c("250","500","1000","2000","4000","8000"),labels=c("0.25", "0.5", "1", "2", "4", "8"), position = "top") +
scale_y_reverse(name = "Level (dB HL)", lim=c(120,-10),minor_breaks = seq(0 ,120, 5), breaks = seq(-10, 120, 10)) +
theme(panel.grid.major = element_line(colour = "black",size=0.1)) +
theme(panel.grid.minor = element_line(colour = "black",linetype="dashed",size=0.1)) +
theme(strip.text.x = element_blank()) +
geom_text(data=data.frame(x = 1.5, y = -6.25, label=c("a)", "b)"),
Ear=c("Left","Right")), aes(x,y,label=label), size=8,inherit.aes=FALSE)

这给出了这个情节:
enter image description here

但是,我不知道如何在缺失的点(0.75、1.5、3 和 6)处添加虚线

关于我如何解决这个问题的任何建议?

最后,我需要在 x 轴上混合使用实线和虚线:
0.25 - solid
0.5 - solid
0.75 - dashed
1 - solid
1.5 - dashed
2 - solid
3 - dashed
4 - solid
6 - dashed
8 - solid

最佳答案

通过将“频率”变量转换为连续变量,我取得了一些进步:

subsetAudio$Frequency <- as.numeric(mapvalues(Avg_Audio$Frequency, c("250","500","750","1000","1500","2000","3000","4000","6000","8000"), 
c("1","2","2.5","3","3.5","4","4.5","5","5.5","6")))

然后玩主要和次要网格线:
ggplot(Audios, aes(x = Frequency, y = dBHL, group = Subject)) +
theme_bw() +
facet_grid(~ Ear) +
geom_line(linetype = "dashed",size=0.8) +
geom_line(data = Avg_Audio, aes(Frequency,dBHL, group = Subject), size = 1.5) +
scale_x_continuous(name = "Frequency (kHz)",breaks=c(1,2,3,4,5,6),labels=c("0.25", "0.5", "1", "2", "4", "8"),minor_breaks=c(2.5,3.5,4.5,5.5), position = "top") +
scale_y_reverse(name = "Level (dB HL)", lim=c(120,-20),minor_breaks = seq(0 ,120, 10), breaks = seq(-20, 120, 20)) +
theme(panel.grid.major = element_line(colour = "black",size=0.1), panel.grid.minor.x = element_line(colour="grey", linetype="dashed"),
strip.text.x = element_blank()) +
geom_text(data=data.frame(x = 1.5, y = -10, label=c("a)", "b)"),
Ear=c("Left","Right")),
aes(x,y,label=label), size=8,inherit.aes=FALSE)

这会产生下图: enter image description here

这非常接近......但我找不到向次要(虚线)网格线(0.75、1.5、3、6)添加刻度或标签的方法。

有什么建议?

关于r - 在离散 x 轴上指定次要网格线/一些虚线网格线,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43499832/

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