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

R基础绘图教程:如何将文本字符类型数据设置为X轴标签

报错原因&解决方法

核心报错诱因

你当前的Countries列实际是列表类型,并非普通字符向量。你用lapply做类型转换时,lapply默认返回列表结构,导致plot()函数无法识别分类轴的坐标值,才触发need finite 'xlim' values报错。
你可以运行class(Finally$Countries)验证,输出会是list而非character。

修复步骤

第一步:修正Countries列的数据类型

在预处理代码最后加一行,把列表列转成普通字符向量即可:

Finally$Countries <- unlist(Finally$Countries)

如果需要固定分类轴的显示顺序,也可以转成因子(默认按数据现有顺序排列):

Finally$Countries <- factor(unlist(Finally$Countries), levels = unique(unlist(Finally$Countries)))

第二步:修正绘图代码

R基础绘图原生支持分类X轴,考虑到国家名称较长容易重叠,调整后的完整绘图代码如下:

# 调大下边距,避免国家名被截断
par(mar = c(12, 4, 4, 4) + 0.3)
# 绘制第一个指标,先关闭默认X轴输出方便自定义
plot(x = Finally$Countries, y = Finally$RobberyPerCent, 
     pch = 16, col = 2, xaxt = "n",
     xlab = "国家", ylab = "RobberyPerCent")
# 自定义X轴刻度,文字旋转90度避免重叠
axis(side = 1, at = 1:nrow(Finally), labels = Finally$Countries, las = 2, cex.axis = 0.7)
# 叠加第二个指标
par(new = TRUE)
plot(x = Finally$Countries, y = Finally$UnlawfulPerCent, 
     pch = 17, col = 3, axes = FALSE, xlab = "", ylab = "")
# 添加右侧第二Y轴
axis(side = 4, at = pretty(range(Finally$UnlawfulPerCent)))
mtext("UnlawfulPerCent", side = 4, line = 3)
# 添加图例区分两个指标
legend("topright", legend = c("RobberyPerCent", "UnlawfulPerCent"), 
       pch = c(16,17), col = c(2,3))

内容的提问来源于stack exchange,提问作者iKcon

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 06:24:05