2016-07-29 84 views
0

我确实有很多数据需要以特殊方式绘制。但我不知道如何在R上执行此操作。 输入是一个包含多列的csv文件。我想绘制的列是A和D. A包含文本和D号码。列A中使用的文本可以在那里多次。但不要紧 enter image description here如何创建一个在y轴上显示对象和在x轴上显示对象的图形

最后,我希望得到一个情节应证明以下几点:

enter image description here

我反倒不知道如何绘制这样的:

我已经尝试过:plot(data1$COLUMND,data1$COLUMNA,xlab = "COLUMND", ylab = "COLUMNA");但结果是A列中的文本被一个数字替换。所以轴在这种情况下从0-3获得标签。 我也尝试使用labels命令更改标签。但是这导致了这样的问题,那就是这些标签在一排排中。但列中的数据不是(在我上面的例子中,但不是在我的真实数据中)。因此,R应该将A替换为0与列A中的相应文本。 为此,我使用了Quick-R guide 中显示的方法,但它们不按要求工作,并用空值替换条目。

回答

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

0

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

首先请注意,“AAD”不在您提供的样本数据中。我们必须告诉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