如果图上只有一种点,可能是由于几个原因造成的:
颜色设置:如果代码中只使用了一种散点的颜色,或者颜色设置没有正确应用到散点上,那么所有点看起来会是同一种颜色。
数据问题:如果数据集本身在某个维度上没有变化(例如所有年份的GDP或能源消费量相同),则散点图上只会显示一个点。
范围问题:如果图表的范围设置不正确,可能无法显示所有数据点。例如,如果Y轴的范围没有覆盖所有数据点的值。
图层覆盖:如果使用了geom_smooth()
,并且se = TRUE
(显示置信区间),有时散点可能会被拟合线或置信区间覆盖。
注释问题:如果注释文本的vjust
和hjust
参数设置不当,可能导致注释无法正确显示。
为了解决这个问题,我们需要确保以下几点:
下面是修改后的R代码示例,确保散点根据年份有不同的颜色,并且添加了注释说明点和线的含义:
# 使用ggplot2包绘制GDP与能源消费的散点图和拟合线图
library(ggplot2)
# 定义数据
df <- data.frame(
Year = 2012:2019,
GDP = c(22250.45, 24791.83, 27379.22, 29550.19, 32665.38, 35478.09, 42021.95, 45828.31),
Energy = c(12083.97, 13310.45, 13766.37, 13827.77, 13954.63, 14159.66, 14074.61, 15019.74)
)
# 绘制散点图和拟合线
p <- ggplot(df, aes(x = GDP, y = Energy, color = Year)) +
geom_point(size = 4) + # 散点代表每年的数据
geom_smooth(method = "lm", se = FALSE, formula = y ~ x, color = "black") + # 添加拟合线
scale_color_viridis_d() + # 使用viridis色彩方案为年份上色
labs(title = "湖北省2012-2019年GDP与工业总能源消费关系图",
x = "GDP (亿元)",
y = "工业总能源消费量 (标煤万吨)") +
theme_minimal() + # 简洁主题
theme(legend.title = element_blank()) # 隐藏图例标题
# 添加注释
p <- p +
annotate("text", x = 40000, y = 14500, label = "散点:每年GDP与能源消费数据", color = "blue") +
annotate("text", x = 40000, y = 14000, label = "直线:GDP与能源消费间的线性拟合", color = "black")
# 显示图表
print(p)
请注意,我在这里使用了scale_color_viridis_d()
函数,它会自动为不同的Year
值分配不同的颜色。如果你想要为特定的年份指定特定的颜色,可以使用scale_color_manual()
函数。另外,注释中的颜色参数应与散点和拟合线的颜色相对应。