如何创建一个在y轴上显示对象和在x轴上显示数字的图

时间:2016-07-29 10:51:43

标签: r csv plot

我确实有很多数据需要以特殊方式绘制。但我不知道如何在R上做到这一点。 输入是包含多个列的csv文件。我要绘制的列是A和D. A包含文本和D编号。 A列中的已使用文本可以存在多次。但没关系 enter image description here

最后,我想得到一个将展示以下内容的情节:

enter image description here

我实际上不知道如何绘制这个:

我尝试过:plot(data1$COLUMND,data1$COLUMNA,xlab = "COLUMND", ylab = "COLUMNA");但结果是A列中的文字被数字取代。因此,在这种情况下,轴从0到3获得标签。 我还尝试使用labels命令更改标签。但是这导致了标签处于一个排列的问题。但是列中的数据不是(在上面的例子中它们是,但不在我的真实数据中)。因此,R应该用A列中的相应文本替换0。 为此,我使用了Quick-R guide中显示的方法 但是它们的工作效果并不理想,而是将条目替换为null。

2 个答案:

答案 0 :(得分:0)

你必须做两个步骤。

1)制作一个载体列表。每个向量都是A列唯一元素后面的名称,并包含D列的相应值。

2)在此列表中使用stripchart()功能。

我的代码方法:

## your data
data <- data.frame(A = c("AAA", "AAB", "AAC", "AAA", "AAE", "AAC"),
                   B = rep(12.3),
                   C = rep(20160729),
                   D = c(100,80,10,0,5,20))

## empty list to fill in the following loop
list <- list()
## get the values in column D for every unique value in column A
## an add it to the list
for (i in unique(data$A)) list[[i]] <- data$D[data$A == i]

## plot the list
stripchart(list,
           xlab = "Column D", ylab = "Column A",
           pch = 16, col = "red")

结果:

Stripchart

答案 1 :(得分:0)

您是否尝试过使用axis功能?

首先,请注意&#34; AAD&#34;不在您提供的示例数据中。我们必须告诉R有关A列中的值以及我们希望如何订购它们的信息:

data1 <- data.frame(A=c('AAA', 'AAB', 'AAC', 'AAA', 'AAE', 'AAC'),
    D=c(100, 80, 10, 0, 5, 20))
data1$A <- factor(data1$A, levels=paste0('AA',LETTERS[1:5]))

现在我们可以策划。我们告诉R暂时忽略Y轴(使用yaxt参数);我们稍后会手动添加它们。

par(mar=c(6,6,4,2)) # Set margins for plot
plot(data1$D, data1$A, xlab = "Column D", ylab = "", yaxt="n", las=1)

最后,我们使用实际值而不是因子水平(即数字)添加Y轴标签。

axis(2, at=1:length(levels(data1$A)), labels=levels(data1$A), las=2)
mtext("Column A", side=2, line=1, las=2, at=3.2)

Output