【问题标题】:R software histogram with all printed x values具有所有打印 x 值的 R 软件直方图
【发布时间】:2015-02-03 15:51:01
【问题描述】:

我有以下数据

meterpiuimportanti[row_sub,]
      Meter Numero Nodi
 [1,]   608         107
 [2,]    51          89
 [3,]   197          81
 [4,]    52          81
 [5,]   192          21
 [6,]   110          14
 [7,]   171          13
 [8,]   114          12
 [9,]   252          11
[10,]   121          10
[11,]    94          10
[12,]   295           9
[13,]   341           9
[14,]   113           7
[15,]   118           5
[16,]   196           4
[17,]    91           3
[18,]    92           3
[19,]    96           3
[20,]   112           3
[21,]   345           3
[22,]   378           3
[23,]   386           3
[24,]    90           2
[25,]   105           2
[26,]   204           2
[27,]   374           2
[28,]   104           1
[29,]   287           1
[30,]   328           1
[31,]   414           1  

我想要一个整页 (1024x768) 直方图,其中 x 轴为第一列,Y 轴为第二列。
问题是:
1) 我不知道如何放大页面
2)我希望所有 x 值都必须打印在 x 轴上和直方图每个框的顶部我想打印 y 的值

感谢您的帮助

【问题讨论】:

  • PS 对不起,我忘了说我必须只使用标准基础库和 Igraph 库
  • 我试过'code' n
  • 你想要一个实际的直方图(这样 x 轴保持连续并且距离实际上代表了一些东西)还是你想要一个条形图?

标签: r plot histogram


【解决方案1】:

请参阅下面的代码。它使用 grDevices 包。我记不太清了,但我认为它与基本安装一起提供。

 df <-read.csv("/Data/test1.csv") #read
 png(filename="output.png", width=1024, height=768) #open graphics
 df <- df[order(df$x),]  #order data source
 mp <- barplot(df$y,axes=F)  #plot w/o labels
 #add value labels
 text(cex=1.5, x=mp, y=df$y+par("cxy")[2]/2+1, round(df$y,2), xpd=TRUE)
 axis(1,at=mp,labels=df$x, las=2)   #add x labels, make'm vertical
 axis(2,seq(0,max(df$y),round(max(df$y)/20))) #add y labels
 dev.off()

【讨论】:

  • 请注意,这不是直方图
  • @Dason,特别问的问题:“我希望所有 x 值都必须打印在 x 轴上,并且在直方图的每个框的顶部我想打印 y 的值。”这使得 X 轴是分类的。因此条形图。
  • 我不会自动得出他们希望 X 是分类的结论。可能是他们想要一个非常干净的版本:j &lt;- rep(d[,1],d[,2]);hist(j,breaks=seq(min(j),max(j),by=1));axis(1,d[,1],d[,1]) 以及上面的标签(其中 d 来自@MaratTalipov 的答案。
  • 我没有声明可读性,实际上暗示它需要大量清理。存在的问题是,使用条形图会扭曲 x 值之间的间距。这真的归结为 OP 真正想要的。
  • 是的。归结为操作。
【解决方案2】:

您可以使用ggplot2 包:

代码

library(ggplot2)

png('~/x.png',width=1024,height=768)
ggplot(d) + 
  aes(x=factor(V1,levels=V1),y=V2) +
  geom_bar(position='dodge',stat='identity') +
  xlab('V1') + 
  geom_text(aes(label=V2), position=position_dodge(width=0.9), vjust=-0.25)
dev.off()

结果

数据集

d <- structure(list(V1 = c(608L, 51L, 197L, 52L, 192L, 110L, 171L, 
114L, 252L, 121L, 94L, 295L, 341L, 113L, 118L, 196L, 91L, 92L, 
96L, 112L, 345L, 378L, 386L, 90L, 105L, 204L, 374L, 104L, 287L, 
328L, 414L), V2 = c(107L, 89L, 81L, 81L, 21L, 14L, 13L, 12L, 
11L, 10L, 10L, 9L, 9L, 7L, 5L, 4L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 
2L, 2L, 2L, 2L, 1L, 1L, 1L, 1L)), .Names = c("V1", "V2"), class = "data.frame", row.names = c(NA, 
-31L))

【讨论】:

  • 谢谢@Marat Talipov,不幸的是我不能使用ggplot2包,但你的情节真的很酷!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-06-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-09-25
  • 2011-12-20
相关资源
最近更新 更多