You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

求绘制离散折线图的R代码,附现有尝试代码及数据集

嘿,我来帮你优化这个离散阶梯折线图的绘制~ 你的基础代码已经用type="s"实现了阶梯图的雏形,但还存在x轴标签拥挤、没有多变量对比、样式不够清晰的问题。下面我会给出两种优化方案,都基于你提供的数据集:

优化离散阶梯折线图的R实现

方案1:Base R 实用改进版

我们可以扩展代码,同时展示**上车(Boarding)、下车(Alighting)和载客量(Load)**三个指标,还能解决x轴标签重叠的问题,添加清晰的标注和图例:

# 你的原始数据集
bus.stop<-c("Polic Chowk","Regional bus stand","hospital", "Alanpura", "Housing Colony", "PG College", "Ranthambore circle" , "Railway station", "Collectorate", "New Bus stand") 
boarding<-c(18,9,15,3,7,1,1,0,0,0) 
alighting<-c(0,3,7,5,8,1,13,8,5,4) 
load<-c(18,24,38,32,29,27,23,11,4,0) 
hous.oton<-data.frame("BusStop" = bus.stop, "Boarding" = boarding, "Alighting"=alighting, "Load"=load) 

# 调整绘图边距,给旋转的x轴标签留空间
par(mar = c(8, 4, 4, 2) + 0.1)
# 先绘制上车人数的阶梯线,设置y轴范围适配最大载客量
plot(hous.oton$Boarding ~ hous.oton$BusStop, type="s", col="darkblue", lwd=2,
     xlab="", ylab="人数", main="公交站点客流与载客量变化",
     ylim=c(0, max(hous.oton$Load)*1.1))

# 添加下车人数的虚线阶梯线
lines(hous.oton$Alighting ~ hous.oton$BusStop, type="s", col="darkred", lwd=2, lty=2)
# 添加载客量的点线阶梯线
lines(hous.oton$Load ~ hous.oton$BusStop, type="s", col="darkgreen", lwd=2, lty=3)

# 旋转x轴标签,避免重叠
axis(1, at=1:nrow(hous.oton), labels=hous.oton$BusStop, las=2, cex.axis=0.8)
# 添加右上角图例
legend("topright", legend=c("上车人数", "下车人数", "实时载客量"),
       col=c("darkblue", "darkred", "darkgreen"), lty=c(1,2,3), lwd=2, bty="n")

方案2:ggplot2 美观定制版

如果想要更现代、易调整的视觉效果,推荐用ggplot2包,它处理多变量绘图和样式定制更灵活:

# 先安装并加载所需包(第一次用先运行install.packages(c("ggplot2", "tidyr")))
library(ggplot2)
library(tidyr)

# 将宽格式数据转为长格式,方便ggplot2批量处理多变量
hous_long <- pivot_longer(hous.oton, cols = c(Boarding, Alighting, Load),
                          names_to = "指标", values_to = "人数")

# 绘制带数据点的阶梯图
ggplot(hous_long, aes(x = BusStop, y = 人数, group = 指标, color = 指标)) +
  geom_step(size=1.2) + # 阶梯线
  geom_point(size=3) + # 添加数据点,让数值更直观
  theme_minimal() +
  labs(title="公交站点客流与载客量变化", x="公交站点", y="人数") +
  theme(axis.text.x = element_text(angle=45, hjust=1, vjust=1), # 旋转x轴标签
        plot.title = element_text(hjust=0.5, size=14, face="bold")) +
  scale_color_manual(values = c("Boarding"="darkblue", "Alighting"="darkred", "Load"="darkgreen"),
                     labels = c("上车人数", "下车人数", "实时载客量"))

小提示:

  • Base R里的type="s"和ggplot2的geom_step()都是实现离散阶梯折线图的核心参数
  • 旋转x轴标签是处理长站点名称的关键,避免标签堆叠看不清
  • 调整y轴范围可以确保所有数据都能完整展示

内容的提问来源于stack exchange,提问作者Sork-kal

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.14 08:18:07