【问题标题】:Line chart with Proper Dates - Plotly R带有正确日期的折线图 - Plotly R
【发布时间】:2023-10-29 23:31:01
【问题描述】:
readdata <- read.csv(file="rawdata.csv", header = TRUE, stringsAsFactors = FALSE)
readdata
        Month Percentage
1  01 09 2015       0.13
2  01 10 2015       0.14
3  01 11 2015       0.14
4  01 12 2015       0.13
5  01 01 2016       0.13
6  01 02 2016       0.13
7  01 03 2016       0.13
8  01 04 2016       0.14
9  01 05 2016       0.14
10 01 06 2016       0.14
11 01 07 2016       0.14
12 01 08 2016       0.15
13 01 09 2016       0.16

我希望绘制一个简单的折线图,其中所有日期(月份)格式为“mmm-yy”,值为百分比。

我的看法

library(plotly)
library(lubridate)
finaldata <- dmy(readdata$Month)
    plot_ly(x=finaldata, y=Percentage, name ="Test", mode = "lines+markers", text = paste(Percentage, "%", sep = ""), hoverinfo = "text")

这会产生产物 但是,每个月都看不到?我希望 x 轴为 Sep-15、Oct-15、Nov-15、Dec-15...等等。

如果我添加%&gt;% layout(xaxis = list(type = "category"))。 x 轴被绘制为

但正如我所说,我希望它们采用“mmm-yy”格式。

P.S:我想要一个折线图,计划在 Shiny 仪表板中使用。如果需要,我可以更改rawdata.csv 的格式。

【问题讨论】:

  • 实际上,使用选项tickmode="array", tickvals=finaldata, ticktext=format(finaldata, "%b-%Y") 得到的结果与上面几乎相同。
  • 它说,“根据提供的信息,'分散'跟踪似乎是合适的。” & 进一步的“分散”对象没有这些属性:“tickmode”

标签: r shiny plotly lubridate


【解决方案1】:

放大时会出现缺失的“2015 年 10 月”。它在原始缩放级别中不可见,因为 plotly 的设计师选择了默认的视觉混乱或“忙碌”级别。设计师的决定往往是相当不错的。即使您不同意,违反软件默认设置也会使未来的开发变得比需要的更难,或者在情节更新其 API 时使您的代码更容易出错。

如果您真的希望每个月都在最外层缩放级别,您可以这样做:

dates_with_months <- format(finaldata,"%Y-%m")
plot_ly(x=dates_with_months, 
        y=Percentage, name ="Test", 
        mode = "lines+markers", 
        text = paste(Percentage, "%", sep = ""), hoverinfo = "text")

请注意,这仅适用于等距数据。

【讨论】:

  • 运行时,它显示“根据提供的信息,‘条形’跟踪似乎合适”并生成条形图。此外,x 轴按升序排列...从 Apr 开始,然后是 Aug、Dec 等等。
  • Re: ordering - 我已经编辑了 dates_with_months 定义,所以有序排序给出了正确的结果。
  • @Jason.dates_with_months &lt;- format(finaldata,"%Y-%m") 结果以日期为数字,例如2017 年 6 月。有没有办法像 2017 年至 5 月这样拼写月份
  • R 提示符中,help(format.POSIXct) 应该可以帮助您选择合适的显示格式。 %b 可能是您想要的,但请查看其他选项。
  • 请注意,拼出月份有可能会将日期视为字符串,并按字母顺序排序,例如订购时间为 2017 年 4 月、2017 年 8 月、2017 年 12 月等。使用 YYYY-mm 格式的数字意味着即使按字母排序也能得到所需的结果。