我使用 R 中由 networkD3 包创建的交互式输出。我知道如何将输出保存为 html 页面,但我还需要将图表的“静态”版本保存为 .png 文件。
代码如下所示:
# Load package
library(networkD3)
# Create fake data
src <- c("A", "A", "A", "A", "B", "B", "C", "C", "D")
target <- c("B", "C", "D", "J", "E", "F", "G", "H", "I")
networkData <- data.frame(src, target)
# Plot
simpleNetwork(networkData)
Run Code Online (Sandbox Code Playgroud)
我可以通过单击“导出”然后“另存为图像”来保存输出。但是,我更喜欢在我的代码中使用一些命令来保存图片。
我正在根据R中的ggplot构建一个Plotly图.我想增加悬停框中文本的大小.假设我有一个像这样的散点图:
library(plotly)
library(ggplot2)
d <- data.frame(a = sample(1:50, 30, T),
b = sample(1:50, 30, T),
col = factor(sample(1:3, 30, T)))
gg <- ggplot() + geom_point(aes(x = a, y = b, color = col), data = d)
p <– plotly_build(gg)
p
Run Code Online (Sandbox Code Playgroud)
有没有办法改变悬停文本的大小?
slick
javascript库(http://kenwheeler.github.io/slick/)给我留下了深刻的印象,并希望将它整合到我的闪亮应用程序/软件页面中.
我想htmlwidgets
在R中使用包含slick js库的软件包,所以已经开始尝试创建一个软件包,如在线文档(http://www.htmlwidgets.org/develop_intro.html)中所建议的那样,通过执行下列...
devtools::create("slick")
setwd("slick")
htmlwidgets::scaffoldWidget("slick")
Run Code Online (Sandbox Code Playgroud)
我从https://github.com/kenwheeler/slick/archive/1.6.0.zip下载了js库
并将其放入包的结构中,以便我有一个看起来有点像这样的文件结构.
R/
| slick.R
inst/
|-- htmlwidgets/
| |-- slick.js
| |-- slick.yaml
| |-- lib/
| | |-- slick-1.6.0/
| | | |-- slick/
| | | | |-- slick.min.js
| | | | |-- slick.js
| | | | |-- slick.css
| | | | |-- slick-theme.css
Run Code Online (Sandbox Code Playgroud)
我的slick.yaml
文件看起来像这样......
dependencies:
- name: slick
version: 1.6.0
src: htmlwidgets/lib/slick-1.6.0
script:
- slick/slick.min.js
- …
Run Code Online (Sandbox Code Playgroud) 由于每个对象,我用的时候获得在Firefox中非常小的情节sankeyNetwork()
从networkd3在闪亮,但无法在Chrome或RStudio.
我没有在脚本中包含任何CSS或JS - 下面的代码为我生成了这个结果.
我错过了什么CSS属性吗?
我使用的是R 3.4.1,闪亮的1.1.0,networkD3 0.4和Firefox 52.9.0.
library(shiny)
library(magrittr)
library(shinydashboard)
library(networkD3)
labels = as.character(1:9)
ui <- tagList(
dashboardPage(
dashboardHeader(
title = "appName"
),
##### dasboardSidebar #####
dashboardSidebar(
sidebarMenu(
id = "sidebar",
menuItem("plots",
tabName = "sPlots")
)
),
##### dashboardBody #####
dashboardBody(
tabItems(
##### tab #####
tabItem(
tabName = "sPlots",
tabsetPanel(
tabPanel(
"Sankey plot",
fluidRow(
box(title = "title",
solidHeader = TRUE, collapsible = TRUE, status = "primary",
sankeyNetworkOutput("sankeyHSM1")
)
)
) …
Run Code Online (Sandbox Code Playgroud) 我一直在尝试使用绘图和串扰库生成交互式链接可视化。如下例所示,似乎可以向 ggplot2 传递一个“共享数据框”对象,以便使用 ggplotly() 生成链接视图。当我尝试运行此示例时,我收到以下错误消息:
错误:ggplot2 不知道如何处理 SharedData/R6 类的数据
我正在使用当前版本的 ggplot2 (v. 2.2.1) 和plotly (4.5.6)。什么可能导致此错误?
谢谢帮助!
我试图复制的示例可以在这里找到:
https://cpsievert.github.io/plotly_book/linking-animated-views.html
library(gapminder)
library(crosstalk)
library(ggplot2)
library(plotly)
g <- crosstalk::SharedData$new(gapminder, ~continent)
gg <- ggplot(g, aes(gdpPercap, lifeExp, color = continent, frame = year)) +
geom_point(aes(size = pop, ids = country)) +
geom_smooth(se = FALSE, method = "lm") +
scale_x_log10()
ggplotly(gg) %>%
highlight("plotly_hover")
Error: ggplot2 doesn't know how to deal with data of class SharedData/R6
Run Code Online (Sandbox Code Playgroud) 我正在尝试开始对 R 使用 plotly,但是我遇到了关于用户名的错误。当我尝试执行以下代码时...
test=ggplot(diamonds,aes(x=diamonds$carat,y=diamonds$price))+geom_point()
test2=plotly(test)
plotly(test)
Run Code Online (Sandbox Code Playgroud)
...我收到错误消息:
Storing 'username' as the environment variable 'plotly_username'
Error in Sys.setenv(plotly_username = username) :
wrong length for argument
Run Code Online (Sandbox Code Playgroud)
我认为 plotly 的 R 包可以通过 htmlwidgets 在没有用户名的情况下使用。据我所知,我使用的是最新版本的 plotly、ggplot 和 htmlwidgets。我究竟做错了什么?
我正在开发一个 R 闪亮应用程序,它使用多个 html 小部件,特别是networkD3、d3heatmap和chorddiag。
这些小部件单独工作正常。但是,在同一页面中使用它们会在它们应该出现的地方留下空白。
这是显示错误的可重现代码。在 UI 中注释绘图行,您将看到绘图出现和消失..
我非常感谢你的帮助!
# libraries
library(shiny)
library(d3heatmap)
library(chorddiag)
library(networkD3)
# Server
server <- function(input, output) {
# create heatmap
output$heatmap <- renderD3heatmap({
d3heatmap(mtcars, scale = "column", colors = "Spectral")
})
# create chord diagram
output$chord <- renderChorddiag({
m <- matrix(c(11975, 5871, 8916, 2868,1951, 10048, 2060, 6171, 8010, 16145, 8090, 8045,1013, 990, 940, 6907),
byrow = TRUE, nrow = 4, ncol = 4)
haircolors <- c("black", …
Run Code Online (Sandbox Code Playgroud) 我正在使用该sparkline
包生成条形图,并将其放入datatable
Shiny 应用程序中的单元格中。我已经设法在独立中产生所需的输出datatable
,但是当我将其放入 Shiny 应用程序中时,它不起作用。spk_add_deps()
这可能与如何识别 htmlwidgets有关。我尝试过spk_add_deps()
多次移动该函数并向其传递各种标识符,但没有任何效果。
我确实在这里发现了本质上相同的问题Render datatable with Sparklines in Shiny
但给定的解决方案 (1) 依赖于在回调函数中为迷你图编写 JavaScript 代码(违背了使用 R 函数的目的sparkline()
)和 (2) 似乎如果迷你图在查看器中呈现,那么我们离让它们在 Shiny 应用程序中呈现而无需编写所有 JavaScript 就不远了。
这是演示:
# Preliminary, load packages and build a demo table with the sparkline code merged in
library(shiny)
library(DT)
library(data.table)
library(sparkline)
## Create demo data sets
my_mtcars <- data.table(mtcars, keep.rownames = TRUE)
names(my_mtcars)[1] <- 'car_id'
set.seed(0)
data_for_sparklines <- data.table(car_id = rep(my_mtcars$car_id, 5),
category = …
Run Code Online (Sandbox Code Playgroud) 我使用以下代码创建了一个交互式可视化:
library(networkD3)
nodes = data.frame("name" = c("node1", "node2","node3", "node4", "node5", "node6", "node7"))
links = as.data.frame(matrix(c(
0,1,7937,
0,2,6990,
0,3,2483,
1,4,2120,
2,4,666,
3,4,282,
1,5,4583,
2,5,5657,
3,5,731,
1,6,1234,
2,6,756,
3,6,1470), byrow = TRUE, ncol = 3))
names(links) = c("source", "target", "value")
sankey <- sankeyNetwork(Links = links, Nodes = nodes,
Source = "source", Target = "target",
Value = "value", NodeID = "name",
fontSize= 12, nodeWidth = 15)'
Run Code Online (Sandbox Code Playgroud)
这是我第一次使用 networkD3 包(或任何与此相关的交互式包),并且通过玩弄我发现为了保持它的交互性,它必须作为网页发布(或者有其他方式吗??)但是查看包的文档我看不到添加标题或标题/评论的方法。我想分享这一轮工作,所以需要在发布的网页上解释每个级别的理想含义
我想rpivotTable
在 rmarkdown HTML 输出中包含几个 s (文档、flexdashboard、其他生成独立 HTML 文件的选项都可以;我不能为此使用 Shiny)。如何为此 htmlwidget 指定固定宽度和/或高度?
我面临的问题是 rpivotTable htmlwidget 似乎会根据我的浏览器缩放来调整自身大小,并且经常与文档中的文本或后续的 rpivotTable 输出重叠(请参见屏幕截图)。每次我在 rpivotTable 中更改某些内容(例如拖放新行或列变量,或设置过滤器)时,情况都会变得更糟。
一些谷歌搜索表明我需要了解 html 小部件和 javascript 调整大小,如果是这样的话,您能否向我指出此 htmlwidget 的正确调整大小方法,或者在这里建议调整大小功能?我意识到这很棘手,因为数据透视表应该调整大小,但假设我知道正确的大小(例如 1000 像素宽,500 像素高),或者我永远不会更改需要调整大小的选项,并将其硬编码达到某些设定的尺寸就可以了。
上述输出的代码(foo.rmd):
---
title: "test_rpt"
output: html_document
---
```{r setup, include=FALSE}
library(rpivotTable)
```
## Plot1
```{r}
rpivotTable(mtcars, rows = 'mpg', aggregatorName = 'Sum', vals = 'cyl')
```
## Plot2
```{r}
rpivotTable(mtcars)
```
Run Code Online (Sandbox Code Playgroud) htmlwidgets ×10
r ×10
networkd3 ×4
shiny ×4
plotly ×3
d3heatmap ×1
dt ×1
htmltools ×1
javascript ×1
png ×1
r-markdown ×1
rpivottable ×1
sparklines ×1