如何在x轴上用x和y列绘制Row.names?

时间:2017-07-25 18:10:32

标签: r plot

我有3列,Row.namesxy

如何在y轴上使用Row.namesx在x轴上绘制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

1 个答案:

答案 0 :(得分:2)

让我们使用ggplot2

R / ggplot2需要将数据放在" long"格式(意味着每行一个观察)来创建许多类型的图形。

我们使用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