【问题标题】:How do I plot the data I have in a horizontal bar graph with descending values so that all the names of the states appear?如何在水平条形图中绘制具有递减值的数据,以便显示所有州的名称?
【发布时间】:2019-08-11 19:41:58
【问题描述】:

我想绘制以下数据:

         Alabama               Alaska              Arizona 
            5471                 1349                 2328 
        Arkansas           California             Colorado 
            2842                16306                 3201 
     Connecticut             Delaware District of Columbia 
            3067                 1685                 3195 
         Florida              Georgia               Hawaii 
           15029                 8925                  289 
           Idaho             Illinois              Indiana 
             661                17556                 5852 
            Iowa               Kansas             Kentucky 
            2517                 2145                 4157 
       Louisiana                Maine             Maryland 
            8103                  907                 5798 
   Massachusetts             Michigan            Minnesota 
            5981                 6136                 2408 
     Mississippi             Missouri              Montana 
            3599                 6631                  638 
        Nebraska               Nevada        New Hampshire 
            1651                 1952                  964 
      New Jersey           New Mexico             New York 
            5387                 1645                 9712 
  North Carolina         North Dakota                 Ohio 
            8739                  573                10244 
        Oklahoma               Oregon         Pennsylvania 
            3455                 2286                 8929 
    Rhode Island       South Carolina         South Dakota 
             895                 6939                  544 
       Tennessee                Texas                 Utah 
            7626                13577                 1072 
         Vermont             Virginia           Washington 
             472                 5949                 3434 
   West Virginia            Wisconsin              Wyoming 
            1575                 4787                  494 

在具有递减值的水平条形图中。我尝试了各种情节,但没有出现州名。只打印了一些名称。

我使用了简单的 Plot 函数,但我无法弄清楚如何让状态名称出现。

将上述数据绘制成水平直方图

plot(table(dfnew$state), type = "h")

只出现了几个州的名称。

【问题讨论】:

  • 可以dput你的数据,方便使用吗?
  • 嗨,丹尼斯。对不起,我没有放数据。该数据实际上是另一个命令的输出,我还没有弄清楚如何进入数据框。但是,下面的答案对我帮助很大。
  • @KaustubhMulay 您并不完全需要 data.frame 来为我们获取数据。输入dput(table(dfnew$state)) 并将结果粘贴到您的问题中就足够了。这会让您下次有问题时更容易。
  • @G5W 也感谢您。会记住的!

标签: r plot


【解决方案1】:

虽然我看到您尝试提供您的数据(谢谢),但它不是我可以在不再次输入的情况下使用的格式。我不想这样做,所以我将使用内置的 USArrests 数据。

您可以使用barplot 函数获得水平条形图。尝试在其中压缩 50 个州,您需要调整页边距并使用小字体,但肯定可以做到。您可以使用order 对条目进行排序。

data(USArrests)

par(mar=c(4,7,1,2))
barplot(USArrests$Murder[order(USArrests$Murder)], 
    names.arg=row.names(USArrests)[order(USArrests$Murder)],
    las=2, cex.names=0.7, horiz=TRUE)

认为您需要的数据是

par(mar=c(4,7,1,2))
TAB = table(dfnew$state)
barplot(sort(TAB), names.arg=names(TAB)[order(TAB)],
    las=2, cex.names=0.7, horiz=TRUE)

但没有您的数据,这是未经测试的。顺便说一句,您可能还需要使图形窗口大于默认值。

【讨论】:

  • 感谢 G5W 的日志。您提供的解决方案有效。我会考虑使图形窗口更大。再次感谢。
【解决方案2】:

dplyr 包中的arrange() 开始以降序获取值:

data %>% arrange(desc(value))

然后使用ggplot2geom_barcoord_flip,这将为您提供水平条。试试这样的:

 ggplot(data, aes(x=state, y=value)) +
 geom_bar() +
 coord_flip()

【讨论】:

  • arrange(desc(state)) 按状态名称排序数据,而不是按要求按值排序。
猜你喜欢
  • 1970-01-01
  • 2017-09-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-11-26
相关资源
最近更新 更多