如何在x轴上用重复的名字在条形图中写标签?

Ift*_*har 12 plot r

我想制作一个简单的条形图,但我有一个问题,我在x轴上有重复的名称.因此,当我试图在x轴上写名时,它不会显示完整的字符串.我有以下数据

x <- c(1.8405917,0.3265986,1.5723623,464.7370299,0.0000000,3.2235716,
       3.1223534, 7.0999787, 1.7122258,3.2005524,3.7531266,469.4436828)
Run Code Online (Sandbox Code Playgroud)

我正在使用barplot

barplot(x,xlab=c("AA/AA","AA/CC","AA/AC","AA/NC","CC/AA","CC/CC","CC/AC",
                 "CC/NC","AC/AA","AC/CC","AC/AC","AC/NC"))
Run Code Online (Sandbox Code Playgroud)

但它不起作用.我也用过

axis()
Run Code Online (Sandbox Code Playgroud)

但它不起作用.

提前致谢.

Rei*_*son 22

不,xlab是为图的整个x轴提供标签,而不是标记单个条.

barplot() 从绘制的矢量名称中获取条形的标签(或者可以导出到一组名称中的东西).

> names(x) <- c("AA/AA", "AA/CC", "AA/AC", "AA/NC", "CC/AA", "CC/CC", "CC/AC",
+               "CC/NC", "AC/AA", "AC/CC", "AC/AC", "AC/NC")
> barplot(x)
> ## or with labels rotated, see ?par
> barplot(x, las = 2)
Run Code Online (Sandbox Code Playgroud)

编辑:正如@Aaron所提到的,barplot()还有一个names.arg为酒吧提供标签.这?barplot就是说:

names.arg:要在每个条形或条形组下面绘制的名称向量.如果省略此参数,则从names属性中获取名称(height如果这是矢量),或者列名称是否为矩阵.

这解释了names.arg未提供的默认行为- 即从绘制的对象中获取名称.哪种用法对您最有用主要是品味问题.没有行/列/名称可能会略微加快代码,但许多R的函数将names直接从对象获取属性(或类似的行名称),因此您不必继续为结果的绘图/标记提供标签等等


Aar*_*ica 11

xlab应该是names.arg.详情?barplot请见.


42-*_*42- 5

使用的方法axis()是捕捉中点,这是barplot函数返回的。见?barplot

 mids <- barplot(x, xlab="")

 axis(1, at=mids, labels=c("AA/AA","AA/CC","AA/AC","AA/NC","CC/AA","CC/CC",
                           "CC/AC","CC/NC","AC/AA","AC/CC","AC/AC","AC/NC"), 
      las=3)
Run Code Online (Sandbox Code Playgroud)