我需要绘制一条路径,该路径并不严格从左到右,而是在 y 轴上交叉,但是自从我升级到plotly 4.7以来,我不能不这样做。fx 没问题。3.6
有谁知道如何以情节方式告诉路径如何排序?
library(dplyr)
library(plotly) # > 4.x
data.frame(x = c(1:5,5:1),y = c(1:10)) %>%
arrange(y) %>%
plot_ly(x = ~x,y = ~y) %>% add_lines()
Run Code Online (Sandbox Code Playgroud)
如果你查看 data.frame 它应该遵循红色路径:
data.frame(x = c(1:5,5:1),y = c(1:10)) %>% arrange(y)
x y
1 1 1
2 2 2
3 3 3
4 4 4
5 5 5
6 5 6
7 4 7
8 3 8
9 2 9
10 1 10
Run Code Online (Sandbox Code Playgroud) 我知道要在 python 中导出,另一个堆栈交换帖子说:
plotly.offline.plot(data, include_plotlyjs=False, output_type='div')
Run Code Online (Sandbox Code Playgroud)
R有这样的东西吗?
当我另存为网页时,它是一个充满 JavaScript 的大文件。
我想使用他们的 javascript
<script src="https://cdn.plot.ly/plotly-latest.min.js"></script>
Run Code Online (Sandbox Code Playgroud)
然后有一个小div id或无论你怎么称呼它。
做这个的最好方式是什么?
编辑:我知道它可以导出为 HTML,但这些 HTML 文档很大(3 兆字节或更多),因为它们包含 javascript。有没有办法在没有plotly javascript的情况下导出它们,然后只使用上面的CDN脚本来调用javascript?
与这里的问题类似,但这并没有准确地给出我需要的东西,而且我无法弄清楚:Plot ellipse3d in R plotly? 。我想在绘图中重新创建 rgl 的 ellipse3d 和表面椭球体。我知道有一个答案允许绘制椭圆体,但作为单独的不透明标记,我需要将其作为稍微不透明的表面椭球体,以便我仍然可以看到椭球体中的数据点。
我试图弄清楚 dww 对“add_surface”的评论是如何工作的,但无法弄清楚......任何人都可以帮忙吗?
if (!require("rgl")) install.packages("rgl")
dt <- cbind(x = rnorm(100), y = rnorm(100), z = rnorm(100))
ellipse <- ellipse3d(cov(dt))
plot3d(dt)
plot3d(ellipse, add = T, color = "red", alpha = 0.5)
Run Code Online (Sandbox Code Playgroud)
dww 的回答是:
if (!require("plotly")) install.packages("plotly")
if (!require("rgl")) install.packages("rgl")
dt <- cbind(x = rnorm(100), y = rnorm(100), z = rnorm(100))
ellipse <- ellipse3d(cov(dt))
p <- plot_ly(mode = 'markers') %>%
add_trace(type = 'scatter3d', size = 1,
x = ellipse$vb[1,], y …Run Code Online (Sandbox Code Playgroud) 我正在使用 R闪亮,想在 gridExtra 的帮助下并排放置几个 ggplotly 图。
一张图(没有 gridExtra)效果很好:
library(shiny)
library(plotly)
u <- fluidPage(plotlyOutput(outputId = "myplots"))
s <- function(input, output) {
pt1 <- reactive({
ggplotly(qplot(42))
})
output$myplots <- renderPlotly({
pt1()
})
}
shinyApp(u, s)
Run Code Online (Sandbox Code Playgroud)
现在,当我尝试通过 gridExtra 添加另一幅图时,它拒绝工作:
library(shiny)
library(plotly)
library(gridExtra)
u <- fluidPage(plotlyOutput(
outputId = "myplots"
))
s <- function(input, output){
pt1 <- reactive({
ggplotly(qplot(42))
})
pt2 <- reactive({
ggplotly(qplot(57))
})
output$myplots <- renderPlotly({
grid.arrange(pt1(), pt2(),
widths = c(1, 1),
ncol = 2)
})
}
shinyApp(u, s)
Run Code Online (Sandbox Code Playgroud)
给我
gList 中的错误:“gList”中仅允许“grobs”
我正在制作一个闪亮的仪表板应用程序。仪表板中的选项卡之一用于我的 Plotly 绘图。我能够很好地显示绘图,但是每当我将鼠标光标放在绘图上超过一秒时,就会出现一个巨大的工具提示,其长度与显示器一样长,显示的数据与我的数据一样多。能适应。这不是 Plotly 内置悬停文本的一部分,这实际上很有用。这就像当您将鼠标悬停在网络上的某些内容上时显示的工具提示。
显然这是不可接受的。特别是因为这个巨大的工具提示需要一秒钟或更长时间才能加载,所以它会让一切陷入困境。我该如何关闭此功能?这很烦人而且一点用处也没有。我认为解决方案与 JS 或 HTML 相关,但我不确定。任何帮助将不胜感激。提前致谢。
编辑:这是情节调用。我使用 ggplotly 是因为我比plotly更熟悉使用 ggplot 自定义绘图。
library(plotly)
plot <- ggplot(mydata) + geom_ribbon(aes(ymin = obsAcc25, ymax = obsAcc97, x = x), fill = "cadetblue3", alpha = 0.8)
+ geom_ribbon(aes(ymin = delAcc25, ymax = delAcc97, x = x), fill = "palegreen3", alpha = 0.8)
+ geom_ribbon(aes(ymin = actAcc25, ymax = actAcc97, x = x), fill = "dodgerblue4", alpha = 0.8)
+ theme(panel.grid.major = element_line(color = "grey58"), panel.grid.minor = element_line(color = "grey75")) …Run Code Online (Sandbox Code Playgroud) 我想使用 TeX 来标记 3D 曲面图的轴。在 MathJax 的帮助下,我设法使用 TeX 作为标题。但不是轴。附件中包含我尝试做的示例。
x0 <- seq(1,100,by=0.1)
z0<-x0^2%*%t(x0)
library(plotly)
p <- plot_ly(
x = x0,
y = x0,
z = z0)%>%
add_surface() %>%
layout(
title = TeX("\\text{Graph of } f(x,y)=x^2*y"),
scene = list(
xaxis = list(title = "x"),
yaxis = list(title = "y" ),
zaxis = list(title = TeX("f(x,y)=x^2*y"))
))%>%
config(mathjax = 'cdn')
p
Run Code Online (Sandbox Code Playgroud)
结果如下
如何将 TeX 也用于轴标签?$\cdot$此外,无论如何我可以在标题中使用*?
我可以轻松地mesh3d在 R 中绘制一个图:
library(plotly)
x <- runif(50, 0, 110)
y <- runif(50, 0, 1)
z <- runif(50, 1, 2)
plot_ly(x = ~x, y = ~y, z = ~z, type = 'mesh3d')
Run Code Online (Sandbox Code Playgroud)
我想根据变量的值对表面进行着色z:高值对应于红色或橙色,中值对应于黄色或绿色,较小值对应于浅蓝色或蓝色。我的问题:我该如何使用mesh3d?
wireframe我使用包中的函数做了类似的事情lattice。
library(lattice)
x<-runif(12,0,1)
y<-runif(12,0,2)
grid<-expand.grid(x,y)
z<-grid$Var1 + grid$Var2^2
df<-data.frame(z=z,x=grid$Var1,y=grid$Var2)
# Note: there are 144 observations and I want 6 colors, so I need 144/6 = 24 replications for each color
nrow(df)
nrow(df)/6
a<-palette(c(rep("blue",24),rep("light blue",24),rep("green",24),rep("yellow",24),rep("orange",24),rep("red",24)))
wireframe(z~x + y,data=df,drape=T,col.regions=a)
Run Code Online (Sandbox Code Playgroud) 我有一个像下面这样的图,我需要在其中显示一个图标题和一些长的方面标签。在ggplot2,它看起来很好。
代表:
library(ggplot2)
library(stringr)
library(plotly)
iris$Species2 <- paste(iris$Species, "... some text to make the label really long and hard to put on a facet label")
iris$Species2 <- str_wrap(iris$Species2, 20)
g <- ggplot(iris, aes(Sepal.Length, Sepal.Width, color = Species)) +
geom_point() +
labs(title = "This title isn't helping anyone") +
facet_wrap(~Species2)
g
Run Code Online (Sandbox Code Playgroud)
但是,转换为动态图并没有按预期工作......刻面标签被切断并进入标题:
gp <- ggplotly(g)
gp
Run Code Online (Sandbox Code Playgroud)
之前有一个关于 this 的 SO question,但看起来 OP 没有尝试答案 - 没有人发现建议的答案没有按预期工作。
plotly当涉及到方面时,我对奇怪的行为并不陌生- 请参阅github 上的对话,但我不太了解plotly修改对象以强制它具有更长的 strip.background。
希望有人可以帮助我修改对象gp …
我想创建一个交互式条形图,让用户可以根据一系列值过滤观察结果,然后动态呈现所选时间段内每个类的计数。由于过滤后的数据需要可用于许多这样的图表,我认为串扰和plotly/ggplot的组合可能会证明是有价值的。
我在下面附加了一个 reprex,它使用共享数据和来自串扰的过滤功能来允许动态过滤部分。当我编织文档时,只要选择了全部范围的值(默认值),条形图就会很好地呈现。
但是,绘图区域对于任何其他区域都为空,即。用户调整范围。
我到底错过了什么?我认为ggplotly()无法处理的完整共享数据集和过滤共享数据集之间一定存在差异。也许我可以遵循另一种方法来实现我的目标?
这是我的 .Rmd 文件的内容:
---
title: mpg class counts filtered by time period
output: html_document
---
```{r echo = FALSE, message = FALSE, warning = FALSE}
library(crosstalk)
library(plotly)
# Wrap data frame in SharedData
sd = SharedData$new(mpg)
# Create a filter input
filter_slider("Year", "Year", sd, column = ~ year, step = 1, width = 250)
# Render graph
bscols(
ggplotly(
ggplot(aes(x = class), data = sd) +
geom_bar() …Run Code Online (Sandbox Code Playgroud)