如何在x轴上绘制行名称,y轴上绘制x和y列?

3
我有三列数据,分别是 Row.namesxy
如何在 x 轴上画出 Row.names,并将 xy 分别放在 y 轴上,以比较 xy 的线条?
    Row.names                      x           y
1   bare_nuclei                   NA          NA
2   bland_chromatin         5.979253    2.100437
3   clump_thickness         7.195021    2.956332
4   marginal_adhesion       5.547718    1.364629
5   mitoses                 2.589212    1.063319
6   normal_nucleoli         5.863071    1.290393
7   single_eipthelial       5.298755    2.120087
8   uniformity_cell_shape   6.560166    1.443231
9   uniformity_cell_size    6.572614    1.325328

通过绘制 xy 的线条,您想展示什么?绘制线条意味着趋势,就我所知,这些是不同变量的离散观察结果,因此使用折线图显示数据是错误的。 - Mako212
1
@Mako212 或许可以画一个直方图,比较每个 Row.name 的 x 和 y 值?我只是想比较每个 Row.name 的 x 和 y 值。 - Joe Johnson
1个回答

3

让我们使用ggplot2

R/ggplot2需要将数据转换为“长格式”(即每行一个观察值),以创建多种类型的图形。

我们使用melt进行转换,使用Row.names作为id.varsmelt(data,id.vars="Row.names")。然后,我们将行名称分配给x轴,将由melt生成的列称为value,用于y值。最后,我们使用geom_bar对x和y值进行着色,并将它们分成单独的条形图,使用position="dodge"

require(ggplot2)
require(reshape2)

df1 <- melt(data,"Row.names")

g1 <- ggplot(df1, aes(x = Row.names, y=value)) +
  geom_bar(aes(fill=variable),stat="identity", position ="dodge") + 
  theme_bw()+ 
  theme(axis.text.x = element_text(angle=-40, hjust=.1))

enter image description here


可能是因为我只能使用 R 的 3.1.1 版本,所以在运行这个程序时出现了错误。我可以加载包,但是当运行 ggplot 代码时,会出现以下错误提示:"不知道如何自动选择函数类型的比例尺。默认为连续型。eval(expr, envir, enclos) : object 'variable' not found"。 - Joe Johnson
我该如何找出原因?当我执行View(df1)时,出现错误信息“Error in View : cannot coerce type 'closure' to vector of type 'character'”。 - Joe Johnson
不用在意那个错误,df1的列名是:Row.names、variable和value。 - Joe Johnson
seq.default(from = best$lmin, to = best$lmax, by = best$lstep) 中的错误: 'from' 的长度必须为1 另外:警告信息: 1:在 min(x) 中:没有非缺失参数来计算最小值;返回 Inf 2:在 max(x) 中:没有非缺失参数来计算最大值;返回 -Inf 3:在 min(diff(sort(x))) 中:没有非缺失参数来计算最小值;返回 Inf - Joe Johnson
"abs(x) 函数错误:数学函数的参数非数字" - Joe Johnson
显示剩余7条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接