USER
# 创建矩形数据框
soil_rect <- data.frame(xmin = -37.56, xmax = -27.83, ymin = -14.76, ymax = -12.36, Source = "Soil")
sediment_rect <- data.frame(xmin = -30.09, xmax = -23.55, ymin = -24.0, ymax = 0.66, Source = "Sediment")
rain_rect <- data.frame(xmin = -37.34, xmax = -34.02, ymin = -13.8, ymax = 8.02, Source = "Rain")
plant_rect <- data.frame(xmin = -33.38, xmax = -28.96, ymin = -3.3, ymax = 42.45, Source = "Plant")
rect_data <- rbind(soil_rect, sediment_rect, rain_rect, plant_rect)
# 计算每个矩形的中心坐标
rect_data$x_center <- (rect_data$xmin + rect_data$xmax) / 2
rect_data$y_center <- (rect_data$ymin + rect_data$ymax) / 2
ggplot() +
geom_rect(aes(xmin = xmin, xmax = xmax, ymin = ymin, ymax = ymax),
data = rect_data, fill = NA, color = "black", size = 0.8, linetype = "dashed") +
geom_text(aes(x = x_center, y = ymax + 0.7, label = Source),
data = rect_data, size = 6, color = "black", hjust = 0.5) +
geom_point(aes(x = C13, y = N15, fill = Season),
data = subset(data, Source == "Stream"), size = 3, shape = 21, stroke = 0.9, colour = "black") +
xlab("碳同位素 (δ13C)") +
ylab("氮同位素 (δ15N)") +
labs(color = "季节") +
theme_minimal() +
theme(
axis.line = element_line(color = "black", linewidth = 0.8),
axis.text = element_text(color = "black", size = 12, face = "plain", family = "Times New Roman"),
axis.ticks = element_line(color = "black", linewidth = 0.8),
axis.title = element_text(color = "black", size = 14, face = "plain", family = "Times New Roman"),
panel.grid = element_blank(),
panel.background = element_blank(),
legend.position = c(0.85, 0.75),
legend.text = element_text(size = 12, face = "plain", family = "Times New Roman"),
legend.title = element_text(size = 14, face = "plain", family = "Times New Roman"),
legend.box.margin = margin(t = 2, r = 2, b = 2, l = 2, unit = "pt"), # 设置图例框的边距
legend.box.background = element_rect(colour = "black", size = 1),
legend.key.size = unit(0.7, "cm")
) +
scale_fill_manual( # 这里设置geom_point的颜色
values = c(
"Spring" = "#7ed3f6",
"Summer" = "#2c3385",
"Autumn" = "#92c86b",
"Winter" = "#018f52"
),
breaks = c("Spring", "Summer", "Autumn", "Winter")
)
怎么让四个坐标轴的线都显示ASSISTANT
要确保图表中的四个坐标轴线都显示,可以在 `ggplot2` 中进行一些设置。默认情况下,`ggplot2` 仅在左侧和下侧显示坐标轴线,但您可以添加上侧和右侧的轴线。以下是如何做到这一点的步骤。
1. 使用 `scale_x_continuous` 和 `scale_y_continuous` 来设置这些轴的显示。
2. 将 `expand` 参数设置为 `c(0, 0)` 以确保不会留有多余的空间。
3. 使用 `theme()` 函数的 `axis.line` 参数自定义轴线的外观。
以下是修改后的代码示例,以确保四个坐标轴线都被显示:
```r
library(ggplot2)
# 创建矩形数据框
soil_rect <- data.frame(xmin = -37.56, xmax = -27.83, ymin = -14.76, ymax = -12.36, Source = "Soil")
sediment_rect <- data.frame(xmin = -30.09, xmax = -23.55, ymin = -24.0, ymax = 0.66, Source = "Sediment")
rain_rect <- data.frame(xmin = -37.34, xmax = -34.02, ymin = -13.8, ymax = 8.02, Source = "Rain")
plant_rect <- data.frame(xmin = -33.38, xmax = -28.96, ymin = -3.3, ymax = 42.45, Source = "Plant")
rect_data <- rbind(soil_rect, sediment_rect, rain_rect, plant_rect)
# 计算每个矩形的中心坐标
rect_data$x_center <- (rect_data$xmin + rect_data$xmax) / 2
rect_data$y_center <- (rect_data$ymin + rect_data$ymax) / 2
ggplot() +
geom_rect(aes(xmin = xmin, xmax = xmax, ymin = ymin, ymax = ymax),
data = rect_data, fill = NA, color = "black", size = 0.8, linetype = "dashed") +
geom_text(aes(x = x_center, y = ymax + 0.7, label = Source),
data = rect_data, size = 6, color = "black", hjust = 0.5) +
geom_point(aes(x = C13, y = N15, fill = Season),
data = subset(data, Source == "Stream"), size = 3, shape = 21, stroke = 0.9, colour = "black") +
scale_x_continuous(expand = expansion(mult = c(0, 0))) + # 确保不留空
scale_y_continuous(expand = expansion(mult = c(0, 0))) + # 同上
xlab("碳同位素 (δ13C)") +
ylab("氮同位素 (δ15N)") +
labs(fill = "季节") +
theme_minimal() +
theme(
axis.line = element_line(color = "black", linewidth = 0.8), # 确保显示所有四条轴
axis.text = element_text(color = "black", size = 12, face = "plain", family = "Times New Roman"),
axis.ticks = element_line(color = "black", linewidth = 0.8),
axis.title = element_text(color = "black", size = 14, face = "plain", family = "Times New Roman"),
panel.grid = element_blank(),
panel.background = element_blank(),
legend.position = c(0.85, 0.75),
legend.text = element_text(size = 12, face = "plain", family = "Times New Roman"),
legend.title = element_text(size = 14, face = "plain", family = "Times New Roman"),
legend.box.margin = margin(t = 2, r = 2, b = 2, l = 2, unit = "pt"), # 设置图例框的边距
legend.box.background = element_rect(colour = "black", size = 1),
legend.key.size = unit(0.7, "cm")
) +
scale_fill_manual(
values = c(
"Spring" = "#7ed3f6",
"Summer" = "#2c3385",
"Autumn" = "#92c86b",
"Winter" = "#018f52"
),
breaks = c("Spring", "Summer", "Autumn", "Winter")
)
```
通过上面的设置,你应该可以看到图形的四个坐标轴都显示出来,并且没有多余的空间。希望这能帮助你!