减少条形图中 x 轴刻度(标签)的数量

2024-04-29

我正在使用lattice包中的条形图。我有 10 年前的时间序列数据,我希望 x 轴以 %b-%Y 格式显示,间隔六个月。这可以在 xyplot(给定日期向量 DateVector)中轻松完成,语法如下:

scales=list(x=list(format = "%b-%Y",tick.number = length(DateVector)/2))

然而,条形图在设计上忽略了因子的 tick.number 选项,因此对于大量数据标签,x 轴变得不可读。如何减少刻度和/或刻度标签的数量?

这是一个重现我的问题的简单示例,其中包含数据(将数据保存为 Testrr.csv 来运行,如果格式错误,请道歉,这是我第一次;)

library(lattice)

inptTrans <- read.csv("Testrr.csv")
inptTrans$NotherTime <- as.Date(as.character(inptTrans$TransDateS),"%m/%d/%Y")
xyp2 <- barchart (NumE+NumF~ NotherTime, data=inptTrans, main = sprintf("Total")
                  ,type='r',xlab = '',ylab='',col=c('red','black')
                  ,horizontal=FALSE
                  ,scales=list(x=list( rot=45,cex=1.0 ,
                                 labels=format(inptTrans$NotherTime,"%b-%Y"),tick.number=2)
                     )
                  ,key=list(text = list(c("Num F","Num E"))
                     ,rectangle=list(col=c('black','red') ),columns = 2
                     ,corner = c(0.05,-0.11),lty = c(1),lwd=3)
                  ,stack=TRUE
                  )

png(sprintf('Testrr.png'),width = 900, height = 750)
print(xyp2) 
dev.off()

测试.csv:

TransDateS,NumTot,NumF,NumE
01/15/2003,339486,18478,293879
02/15/2003,343761,16430,295272
03/15/2003,413700,17924,356004
04/15/2003,432741,18260,377046
05/15/2003,465439,18721,406632
06/15/2003,490699,18276,424773
07/15/2003,507818,18354,440237
08/15/2003,506530,17391,437386
09/15/2003,481039,17809,411568
10/15/2003,483364,19507,412902
11/15/2003,392189,16308,329675
12/15/2003,444249,18342,367489
01/15/2004,364662,20009,308456
02/15/2004,389718,16894,329946
03/15/2004,511386,20207,434052
04/15/2004,525563,19867,452646
05/15/2004,538570,17557,463289
06/15/2004,620868,20386,535523
07/15/2004,581368,20844,500511
08/15/2004,580773,19687,495930
09/15/2004,523992,21322,442304
10/15/2004,507288,18907,427265
11/15/2004,489571,19135,409818
12/15/2004,510904,21213,419328
01/15/2005,419417,21930,351257
02/15/2005,446402,19600,374778
03/15/2005,581109,22655,486727
04/15/2005,574275,21263,487661
05/15/2005,617399,21033,524466
06/15/2005,688876,26999,584782
07/15/2005,610606,20712,516127
08/15/2005,670746,23171,562919
09/15/2005,601594,23769,499257
10/15/2005,537107,21057,446620
11/15/2005,517340,22378,421351
12/15/2005,507610,22002,403392
01/15/2006,409802,25032,334607
02/15/2006,429196,23383,350498
03/15/2006,567056,27528,461193
04/15/2006,502403,24994,415797
05/15/2006,578793,27765,480468
06/15/2006,603134,31641,501012
07/15/2006,507408,25796,423143
08/15/2006,557500,31435,460225
09/15/2006,475884,30448,386443
10/15/2006,469092,31648,385751
11/15/2006,432720,36363,349832
12/15/2006,422369,30619,335706
01/15/2007,365297,38993,302488
02/15/2007,372276,34855,308599
03/15/2007,455525,39038,377113
04/15/2007,431043,36892,363764
05/15/2007,473539,42371,401959
06/15/2007,483341,44540,408415
07/15/2007,441046,43735,373058
08/15/2007,446111,48509,375242
09/15/2007,341554,45252,283456
10/15/2007,365869,55746,304820
11/15/2007,333946,57399,274292
12/15/2007,309551,51137,252391
01/15/2008,270806,70554,229161
02/15/2008,289606,66395,245970
03/15/2008,328369,65904,279960
04/15/2008,353531,78510,308293
05/15/2008,375080,81284,328119
06/15/2008,390034,80175,342170
07/15/2008,378648,85689,334255
08/15/2008,363756,83357,321556
09/15/2008,350942,79301,309385
10/15/2008,330164,75568,293867
11/15/2008,252408,67388,222510
12/15/2008,296037,65057,261619
01/15/2009,222048,69380,201462
02/15/2009,247591,77532,224236
03/15/2009,305516,57897,277544
04/15/2009,322308,65778,295160
05/15/2009,335134,78854,305599
06/15/2009,386702,93204,353285
07/15/2009,391393,91153,358731
08/15/2009,361150,77043,329656
09/15/2009,360568,79893,327923
10/15/2009,374886,90766,339969
11/15/2009,342502,77895,305321
12/15/2009,330770,81255,300899
01/15/2010,238132,94309,220064
02/15/2010,261558,81167,241123
03/15/2010,363432,103052,335172
04/15/2010,385535,100984,355852
05/15/2010,381303,95408,350883
06/15/2010,416893,94812,376190
07/15/2010,297810,94574,278054
08/15/2010,313494,98536,291501
09/15/2010,301782,110154,280312
10/15/2010,279117,80204,260114
11/15/2010,270178,67700,250713
12/15/2010,301323,67770,279877
01/15/2011,232283,78998,219762
02/15/2011,236917,64257,223213
03/15/2011,312669,80275,295648
04/15/2011,317720,77881,301463
05/15/2011,332220,76017,315955
06/15/2011,364962,79413,347253
07/15/2011,320199,67812,305785
08/15/2011,352555,74725,337283
09/15/2011,316858,82664,303357
10/15/2011,293425,69684,281407
11/15/2011,279320,73735,267671
12/15/2011,295369,70498,282722
01/15/2012,238417,73051,229405
02/15/2012,267105,65015,256719
03/15/2012,328104,63709,315019
04/15/2012,330508,58175,318258
05/15/2012,369418,65886,356174
06/15/2012,361304,59515,348708
07/15/2012,305613,49700,295448
08/15/2012,227541,35801,219883

论点tick.number实际上只是关于放置刻度线的建议。在这种情况下,使用at争论可能会产生更一致的结果。

如果要绘制每六个标签,请首先创建一个向量来索引该序列:

okLabs <- seq(1, nrow(inptTrans), by = 6)
okLabs
[1]   1   7  13  19  25  31  37  43  49  55  61  67  73  79  85  91  97 103 109 115

然后你就可以通过okLabs to the at参数并用它来子集你的labels(这里的scales列表被分配给一个对象,您可以将其传递给scales争论):

scalesList <- list(x = list(rot = 45, cex = 1.0,
    labels = format(inptTrans$NotherTime, "%b-%Y")[okLabs], at = okLabs))

barchart (NumE+NumF~ NotherTime, data=inptTrans, main = sprintf("Total")
              ,type='r',xlab = '',ylab='',col=c('red','black')
              ,horizontal=FALSE
              ,scales= scalesList
              ,key=list(text = list(c("Num F","Num E"))
                 ,rectangle=list(col=c('black','red') ),columns = 2
                 ,corner = c(0.05,-0.11),lty = c(1),lwd=3)
              ,stack=TRUE
              )

请注意,当缺少 (NA) 您尝试绘制的数据中的值。为此,您可以尝试忽略缺少数据的行并创建一个新的data.frame来自该子集。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

减少条形图中 x 轴刻度(标签)的数量 的相关文章

随机推荐

  • pytube 在 Android 中传输视频所需的时间太长

    我在用pytube在 Android 中流式传输视频 借助chaquopy 视频文件 py from pytube import YouTube def video link yt YouTube f https www youtube c
  • FormsAuthentication.SetAuthCookie() 是否需要重定向?

    检查用户的凭据并确认其良好后 我正在使用FormsAuthentication SetAuthCookie Username false 对用户进行身份验证 然后在母版页中我使用Page User Identity IsAuthentica
  • 不区分大小写“包含(字符串)”

    有没有办法让下面的返回为真 string title ASTRINGTOTEST title Contains string 似乎没有过载允许我设置区分大小写 目前我将它们都大写 但这很愚蠢 我指的是i18n http en wikiped
  • 为什么这个 eclipse 错误显示以及它的解决方案应该是什么

    缺少库 xdoclet 1 2 1 jar 选择 XDoclet 的主目录 1 2 1 为什么这个 eclipse 错误显示以及它的解决方案应该是什么alz 这可能是因为该 jar 没有添加到您的项目构建路径中 请按照以下步骤操作 Righ
  • 如何处理MaxUploadSizeExceededException

    MaxUploadSizeExceededException当我上传的文件大小超过允许的最大值时 会出现异常 我想在出现此异常时显示错误消息 如验证错误消息 我该如何处理这个异常 以便在 Spring 3 中执行类似的操作 Thanks 这
  • 可变长度数组性能影响 (C/C++)

    我正在编写一个相当简单的函数 它将数组发送到文件描述符 但是 为了发送数据 我需要附加一个一字节标头 这是我正在做的事情的简化版本 它似乎有效 void SendData uint8 t buffer size t length uint8
  • 使用Javascript自动将光标移动到下一个表单字段[关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 是否可以使用Javascipt自动将
  • 自动滚动的实时行情(如 Twitter 的“热门推文”)

    是否有一个好的 Javascript 库可以生成自动滚动列表 例如 Twitter 主页上的 热门推文 最好作为 jQuery 插件 它还应该支持 AJAX 功能 动态添加新列表项 由于我们对现有的解决方案并不满意 因此我们从头开始实施了一
  • 移动数组中的元素

    我需要一点帮助 我想将数组中的元素向上移动一个元素 以便新位置 1 包含位置 1 中的旧值 new 2 包含 old 1 依此类推 旧的最后一个值被丢弃 第一个位置的新值是我每秒给出的新值 我使用大小为 10 的数组 uint32 t TE
  • 如何在 VMWare 中查看 Django 开发服务器?

    我正在尝试从运行 Windows 的 VMWare 连接到在 OS X localhost 8000 中运行的 Django 开发服务器 我尝试了各种设置组合 但似乎都不起作用 在 localhost 8000 上运行 Django 服务器
  • ServiceM8 - 我可以过滤多个字段吗

    我正在研究与 ServiceM8 的集成 并希望使用 filter REST API 来过滤多个 类似 company uuid 和 status 之类的东西 ServiceM8 文档给出了以下示例 但不包括 OR AND 类型逻辑的任何使
  • 在 where 子句中使用 CASE 时出现语法错误

    类似的问题已被问到here https stackoverflow com questions 22001787 using if condition in where clause 无论如何 我遇到了语法错误 我无法弄清楚 这是我的代码
  • 包含不同类型的两个集合相交

    假设我有一个集合 称之为ids它是类型IEnumerable
  • 如何在 Java 中以编程方式获取接口的所有实现的列表?

    我可以通过反思或类似的方式来做到这一点吗 我已经搜索了一段时间 似乎有不同的方法 这里总结一下 反思 https github com ronmamo reflections如果您不介意添加依赖项 该库非常受欢迎 它看起来像这样 Refle
  • 如何在亚马逊云(AWS EC2)中安装firefox?

    我有一个拥有所有权限的 AWS 账户 我想在环境中安装 Firefox 因为我的应用程序将启动 Firefox 并对 Web 应用程序运行一些测试 如何安装火狐浏览器 执行以下命令解决了问题 sudo apt get install xvf
  • 从多个通知启动活动会覆盖之前的意图

    public static void showNotification Context ctx int value1 String title String message int value2 NotificationManager no
  • 带有多表查询的 SQL Join 版本的 Djangoviews.py

    需要一些有关 Django 版本的 SQL 多表查询的帮助 该查询使用 3 个表来检索餐厅名称 地址Restaurants table和美食类型来自Cuisinetypes table 所有这些都基于通过 URL 传递的菜品名称 菜品 ID
  • 如何使用 cypress.io 处理 PayPal 弹出窗口上的元素

    我需要自动化端到端测试 包括使用 PayPal 购买订单 此测试包括验证购买订单后出现的屏幕中的某些元素 我目前正在尝试使用 cypress io 我知道赛普拉斯建议不要访问第三方网站 https docs cypress io guide
  • Android:从 Android Java 源代码创建 UML [已关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我正在寻找一个可以从我的 Java Android 源代码自动创建 Uml 的程序 我测试过ArgoU
  • 减少条形图中 x 轴刻度(标签)的数量

    我正在使用lattice包中的条形图 我有 10 年前的时间序列数据 我希望 x 轴以 b Y 格式显示 间隔六个月 这可以在 xyplot 给定日期向量 DateVector 中轻松完成 语法如下 scales list x list f