我正在开发的闪亮应用程序正在使用 ggplotly 显示图形。在结果数据集为空的情况下,将显示一个空白图,如下所示。

是否可以显示自定义消息,例如“所选输入不存在数据”而不是空图
在验证的帮助下,当用户未在前端选择输入时,我需要能够显示错误消息 -
validate(
need(input$category, 'No data exists, please select a Category')
)
Run Code Online (Sandbox Code Playgroud)
当最终数据集为空时,我想在服务器端类似地显示自定义消息,到目前为止,我已经根据谷歌的帮助尝试了以下代码。这些代码没有给出任何错误,但默认情况下会打印错误消息。
validate(
need(nrow(dataset() > 0), 'Message here')
)
Run Code Online (Sandbox Code Playgroud)
或者
validate(
need(is.null(dataset), 'Message here')
)
Run Code Online (Sandbox Code Playgroud)
我在下面的代码的帮助下绘图,其中 g() 是我在过滤器应用基础用户输入后的最终数据集 -
output$plot1 <- renderPlotly({
p <- ggplot(g(), aes_string(x=input$x, y=input$y)) + geom_point(alpha=0.4)
ggplotly(p)
})
Run Code Online (Sandbox Code Playgroud)
我是 Shiny 和 R 的新手,感谢任何帮助。
谢谢。
我想知道是否有一种方法可以为plotly的饼图提供自定义图标,而不是通常的饼图分区
到目前为止,我正在使用饼图显示性别信息,该饼图如下所示:
我正在尝试使其看起来像下面链接中的性别图:
绘图代码如下:
plot_ly(genderselection, labels = ~Gender, values = ~Freq, type = 'pie') %>%
layout(title = paste0("Gender Distribution of Patients from Boston"),
xaxis = list(showgrid = FALSE, zeroline = FALSE, showticklabels = FALSE),
yaxis = list(showgrid = FALSE, zeroline = FALSE, showticklabels = FALSE),
legend=list(orientation='h'))
Run Code Online (Sandbox Code Playgroud)
性别选择数据框:
Gender Freq
F 70
M 65
Run Code Online (Sandbox Code Playgroud)
如果不使用plotly,是否还有其他库可用于使用自定义图标显示信息?
我一直在尝试制作一张美国地图,其中包含枪击事件的叠加散点图,每个点的 hoverinfo 标签中都有伤亡人数和受伤人数。但是,标签弹出为“num_killed”,我想将其格式化为“Number Killed:”。到目前为止,我已经尝试在 ggplot 部分标记变量,但无济于事。有什么方法可以更改工具提示中变量名称的打印方式吗?
这是我的代码:
library(plotly)
library(dplyr)
library(ggplot2)
us <- map_data("state")
library(maps)
g <- ggplot() +
geom_polygon(data = us, aes(x=long, y = lat, group = group), fill="grey", alpha=0.3) +
geom_point(data=shootings, aes(x=lng, y=lat, size = num_killed, color = num_injured)) +
labs(color = "Number Injured", size = "Number Killed", num_killed = "Number Killed", num_injured = "Number Injured")
plot <- ggplotly(g)
Run Code Online (Sandbox Code Playgroud)
所附数据集是该数据库处理后的 csv:http : //www.gunviolencearchive.org/reports/mass-shooting? page =1 (作为数据框处理)。
我正在尝试使用data.frameR 中的两个不同绘制折线图plotly。问题是两者data.frame都有不同的维度。data.frame1 的示例数据:
DATE SOC resdiff
2016 2017-08-11 02:40:00 95.45 0.54
4033 2017-08-18 02:45:00 94.88 0.56
6048 2017-08-25 02:45:00 94.28 0.60
8064 2017-09-01 02:45:00 93.68 0.60
10080 2017-09-08 02:45:00 92.96 0.72
12096 2017-09-15 02:45:00 92.13 0.83
Run Code Online (Sandbox Code Playgroud)
data.frame2 的样本数据:
data.event_type data.user data.stamp
1 config *INST* 2018-06-27 14:37:29
2 config *INST* 2018-02-14 19:30:57
3 config *SYNC* 2017-12-18 07:00:53
4 config *SYNC* 2017-12-18 06:59:14
5 config *INST* 2017-10-03 00:55:25
6 config *INST* 2017-09-28 00:49:29 …Run Code Online (Sandbox Code Playgroud) 你好!有没有办法对图表进行索引以在特定点开始和结束(可能不符合数字顺序)?
我有从 10 月 1 日开始到次年 9 月 31 日结束的数据。该系列在过去的几年中重复出现,我想建立一个每日季节性图表。挑战在于X轴不是从低到高,它是10-11-12-1-2-3-4-5-6-7-8-9。
问题一:
您可以按月份 10-11-12-1-2-3-4-5-6-7-8-9 订购索引吗?同时,与 %m-%d 格式兼容,因为真正的问题是每日格式,但为了简洁起见,我只使用了几个月。
结果应该是这样的...抱歉我不得不使用 Excel...
问题2:
我们可以删除连接的图表线吗?或者问题 1 的解决方案会自然地解决问题 2 吗?下面尝试中的示例。
问题3:
解决方案的最终格式是否允许采用移动平均值或初始数据的其他突变?尝试 #2 中的表将允许按年取每月的平均值。由于 7 月 17 日是 6,7 月 18 日是 12,因此我们将在图表中绘制 9 等整个图。
问题4:
有没有和XTS等价的解决这个问题的?
谢谢你,谢谢你,谢谢你!
library(ggplot2)
library(plotly)
library(tidyr)
library(reshape2)
Date <- seq(as.Date("2016-10-1"), as.Date("2018-09-01"), by="month")
values <- c(2,3,4,3,4,5,6,4,5,6,7,8,9,10,8,9,10,11,12,13,11,12,13,14)
YearEnd <-c(2017,2017,2017,2017,2017,2017,2017,2017,2017,2017,2017,2017,
2018,2018,2018,2018,2018,2018,2018,2018,2018,2018,2018,2018)
df <- data.frame(Date,values,YearEnd)
## PLOT THE TIMESERIES
plot_ly(df, x = ~Date, y = ~values, type = "scatter", mode = "lines")
Run Code Online (Sandbox Code Playgroud)
## PLOT THE …Run Code Online (Sandbox Code Playgroud) 是否可以从循环或函数内部使用ggplotly()或datatable()在 RMarkdown 中for?例子:
---
title: "Using `ggplotly` and `DT` from a `for` loop in Rmarkdown"
output: html_document
---
```{r setup, include=FALSE}
library(ggplot2); library(DT)
```
## Without `for` loop - works
```{r}
datatable(cars)
g <- ggplot(cars) + geom_histogram(aes_string(x=names(cars)[1] ))
ggplotly(g)
```
## From inside the `for` loop - does not work (nothing is printed)
```{r}
for( col in 1:ncol(cars)) {
datatable(cars) # <-- does not work
print( datatable(cars) ) # <-- does not work either …Run Code Online (Sandbox Code Playgroud) 我想知道如何通过滚动而不是使用缩放按钮来选择特定区域来放大绘图,因为我需要在不同分辨率下动态探索数据。理想情况下,我会有类似谷歌地图标签策略的东西,您只能看到高级的主要标签,但当您放大时,会显示更多标签。与缩放相关的问题,当我绘制文本标签时,它们的大小保持相对于呈现的绘图区域,这意味着放大不会增加字体大小。有没有办法让字体在缩放时显得更大?
缩放后显示的标签尺寸较小
另外,工具提示配置对我来说不起作用,使用以下策略将变量添加到 ggplot 中的 aes 并将其名称添加到 ggplotly 工具提示参数中。
p <- ggplot(mtcars, aes(x = disp, y= am, color = as.factor(cyl),
gear=gear, hp=hp))+geom_point()
ggplotly(p,tooltip = c("x", "gear", "hp"))
Run Code Online (Sandbox Code Playgroud)
最后,当我在散点图上选择一堆点时,是否有可能在右侧显示标签列表作为文本?我基本上希望识别具有选择(通过框选择或套索选项)特征的特征,并将它们导出以在另一个平台中进行分析,或者只是保存哪些合格的特征。
谢谢
我正在制作一个 ggplotly 图,它定义具有不同填充颜色的组(A 组或 B 组)。
library(ggplot2)
library(plotly)
data <- data.frame(x = c(1,2,3, 10, 11, 12),
y = c(1,2,3, 10, 11, 12),
group = c(rep("A",3), rep("B",3)))
p <- ggplot(data, aes(x = x, y = y, fill = group))+
geom_point()
ggplotly(p)
Run Code Online (Sandbox Code Playgroud)
我希望默认情况下不显示其中一个级别,就像我单击图例来隐藏该级别一样。
如何以编程方式设置图例,以便默认情况下取消选择 B 组。
我目前正在尝试开发一个曲面图来检查以下数据框的结果。我想在 x 轴上绘制噪声的增加值,在 y 轴上绘制 mu 的增加值,在 z 轴上绘制点估计值。查看 ggplot2 和 ggplotly 后,不清楚如何在表面或 3D 图中绘制这些列中的每一列。
df <- "mu noise0 noise1 noise2 noise3 noise4 noise5
1 1 0.000000 0.9549526 0.8908646 0.919630 1.034607
2 2 1.952901 1.9622004 2.0317115 1.919011 1.645479
3 3 2.997467 0.5292921 2.8592976 3.034377 3.014647
4 4 3.998339 4.0042379 3.9938346 4.013196 3.977212
5 5 5.001337 4.9939060 4.9917115 4.997186 5.009082
6 6 6.001987 5.9929932 5.9882173 6.015318 6.007156
7 7 6.997924 6.9962483 7.0118066 6.182577 7.009172
8 8 8.000022 7.9981131 8.0010066 8.005220 8.024569 …Run Code Online (Sandbox Code Playgroud) 我正在绘制散点图,ggplot()如下所示:
library(data.table)
library(plotly)
library(ggplot2)
library(lubridate)
dt.allData <- data.table(date = seq(as.Date('2020-01-01'), by = '1 day', length.out = 365),
DE = rnorm(365, 4, 1), Austria = rnorm(365, 10, 2),
Czechia = rnorm(365, 1, 2), check.names = FALSE)
## Calculate Pearson correlation coefficient: ##
corrCoeff <- cor(dt.allData$Austria, dt.allData$DE, method = "pearson", use = "complete.obs")
corrCoeff <- round(corrCoeff, digits = 2)
## Linear regression function extraction by creating linear model: ##
regLine <- lm(DE ~ Austria, data = dt.allData)
## Extract k …Run Code Online (Sandbox Code Playgroud)