小编Sté*_*ent的帖子

两个基于ggplot2的不同数据集的图例

是否有可能有两个ggplot2的图例,但基于不同的数据集?例如,在下面的代码中,我想在同一图形中同时获得第一种情况的图例和第二种情况的图例.我的尝试(第三种情况)不起作用.

library(ggplot2)
library(scales)

yrng <- range(economics$unemploy)
xrng <- range(economics$date)
presidential <- presidential[-(1:3), ]

# add a fictive factor to the economics dataset
economics <- cbind.data.frame(economics, col=gl(2, nrow(economics)/2))

#####################
## first situation ##
#####################
# first plot with legend
unemp <- qplot(date, unemploy, data=economics, geom="line",
                 xlab = "", ylab = "No. unemployed (1000s)", colour=col)
# second plot without legend
unemp + geom_vline(aes(xintercept = start), data = presidential)

######################
## second situation ##
######################
# first plot without legend
unemp <- qplot(date, …
Run Code Online (Sandbox Code Playgroud)

r ggplot2

6
推荐指数
1
解决办法
3698
查看次数

使用knitr调用块的动态数量

我有这样一个清单:

> lSlopes
$A
  Estimate 2.5 % 97.5 %
1     2.12 -0.56   4.80

$B
  Estimate 2.5 % 97.5 %
1     2.21 -0.68   5.10

$C
  Estimate 2.5 % 97.5 %
1     2.22 -2.21   6.65
Run Code Online (Sandbox Code Playgroud)

它有三个元素,但其长度可以改变(根据此处未显示的数据).我想在一个块中显示每个元素.

我的第一个想法是knit_child()在每一步编写一个包含循环调用的块,但我不知道如何获得正确的渲染knit_child().

我发现以下解决方案效果很好,但需要两个Rmd文件; 第一个调用第二个,第二个递归调用自身:

mainfile.Rmd:

```{r, echo=FALSE}
J <- length(lSlopes)
i <- 1
```

```{r child, child="stepfile.Rmd"}
```
Nice!
Run Code Online (Sandbox Code Playgroud)

stepfile.Rmd:

```{r, echo=FALSE}
lSlopes[[i]]
i <- i+1
```

```{r child, child="stepfile.Rmd", eval= i <= J}
```
Run Code Online (Sandbox Code Playgroud)

这准确地生成了我想要的渲染:

在此输入图像描述

我喜欢这个棘手的解决方案,但我想知道是否存在非递归解决方案?

r knitr r-markdown

6
推荐指数
1
解决办法
752
查看次数

与knitr markdown并排的两个大块

有了Rmarkdown,我们怎么能并排获得两个块输出?

我天真地试过这个不起作用:

<div class="container-fluid">
    <div class="row-fluid">
        <div class="span4">
```{r one, eval=TRUE, echo=FALSE}
......
......
```
        </div>
        <div class="span4">
```{r two, eval=TRUE, echo=FALSE}
......
......
```        
        </div>           
    </div>
</div>  
Run Code Online (Sandbox Code Playgroud)

实际上,更准确地说,我想并排产生两个数字.我知道只有一个数字mfrow()用于经典情节或grid.arrange()ggplots,这是可能的,但我想包括两个html图例,每个图下面一个.

注意:我对HTML很无知.

r rstudio knitr r-markdown

6
推荐指数
1
解决办法
3842
查看次数

用 R 绘制趋势虚线

如何用plotly包得到虚线趋势线?根据文档,应该是:

dat <- iris[,2:3]
colnames(dat) <- c("x","y")
p <- plot_ly(dat, x = x, y = y, type="scatter", mode="markers", name="data")
add_trace(p, x = x, y = fitted(lm(y~x, data=dat)), line = list(dash="dashed"), name="regression line")
Run Code Online (Sandbox Code Playgroud)

但趋势线是稳固的。

r plotly

6
推荐指数
1
解决办法
8977
查看次数

如何在R中为情节框图自定义悬停文本

我了解如何自定义散点图中的悬停文本plotly,但是框图不接受"text"属性.Warning message: 'box' objects don't have these attributes: 'text'.我有超过300个x轴变量,并且在两组(A或B)中有编号样本(1-50),我想在同一个框图中一起绘制,然后我想区分样本数和将光标移到异常值上时,通过悬停文本进行分组.我想要自定义数据标签而不是自动四分位标签.这可能与plotly箱形图有关吗?

library(plotly) 
library(magrittr)

plot_ly(melt.s.data, 
          x = ~variable, 
          y = ~value,
          type = 'box', 
          text = ~paste("Sample number: ", Sample_number, 
                       '<br>Group:', Group)) %>% 
        layout(title = "Individual distributions at each x")
Run Code Online (Sandbox Code Playgroud)

在悬停信息中使用四分位数信息的情节框图 这里有一些示例数据只显示了5个变量(但是当推断到我的300时,代码应该工作)...

#sample data
set.seed(456)
#Group A
sample.data_a <- data.frame(Class = "red", Group = "A",
                            Sample_number = seq(1,50,by=1), 
                            x1= rnorm(50,mean=0, sd=.5), 
                            x2= rnorm(50,mean=0.5, sd=1.5), 
                            x3= rnorm(50,mean=5, sd=.1), 
                            x4= rnorm(50,mean=0, sd=3.5),
                            x5= rnorm(50,mean=-6, sd=.005))
#Group B
sample.data_b <- data.frame(Class …
Run Code Online (Sandbox Code Playgroud)

r plotly r-plotly

6
推荐指数
1
解决办法
1275
查看次数

使用Haskell OpenGL产生不良阴影

我用Haskell OpenGL绘制了Barth sextic并且存在问题.我也用R(用包rglmisc3d)绘制它,没有问题.这两种算法(在Haskell和R中)非常相似.Barth sextic是一个隐式曲面,在Haskell中我使用行进立方体算法计算这个曲面的三角剖分,我通过将其中一个转换misc3d为Haskell和C.我使用顶点法线,每个由隐式渐变定义方程.

这是问题所在:

在此输入图像描述

我不想要这些黑色阴影.当我看到sextic的背面,通过180°旋转,没有这样的阴影:

在此输入图像描述

这个Github仓库中提供了完整的代码.以下是与颜色相关的代码部分:

fuchsia :: Color4 GLfloat
fuchsia = Color4 1.00 0.00 1.00 1
discord :: Color4 GLfloat
discord = Color4 0.21 0.22 0.25 1

  renderPrimitive Triangles $ mapM_ drawTriangle triangles
  swapBuffers
  where
    drawTriangle ((v1,v2,v3), (n1,n2,n3)) = do
      materialDiffuse FrontAndBack $= fuchsia
      normal n1
      vertex v1
      normal n2
      vertex v2
      normal n3
      vertex v3

  clearColor $= discord
  materialAmbient FrontAndBack $= black
  materialDiffuse FrontAndBack $= white
  materialEmission FrontAndBack $= black …
Run Code Online (Sandbox Code Playgroud)

opengl haskell marching-cubes

6
推荐指数
1
解决办法
157
查看次数

使用 jquery UI 闪亮

我想将jquery UI与shiny(不使用shinyjqui库)一起使用。当我有一个图层并尝试使用 jqueryUI 移动它时,它工作得很好,但是当使用 insertUI 动态生成该图层时,它就不起作用了。

\n\n

这是代码:

\n\n
library(shiny)\n\nui <- fluidPage(theme = "style.css",\n            tags$script(src = "jquery-ui.js"),\n            tags$script(src = "script2.js"),\n            actionButton("add","Add layer"),\n            div(class="aux"),\n            div(id="works",style="width:300px;height:200px;background:red"))\n\n\n\nserver <- function(input, output, session) {\n\n    observeEvent(input$add,{\n    insertUI(\n      selector = ".aux",\n      where="afterEnd",\n      ui  = div(id=paste0("new",input$add),style="width:300px;height:200px;background:blue")\n\n    )\n\n\n  })\n\n\n\n\n\n\n}\nshinyApp(ui, server)\n
Run Code Online (Sandbox Code Playgroud)\n\n

以及js脚本

\n\n
  $( function() {\n\n\n    $("#works").draggable();\n    $("#new1").draggable();\n\n\n  });\n
Run Code Online (Sandbox Code Playgroud)\n\n

谢谢!

\n

javascript jquery-ui r shiny

6
推荐指数
1
解决办法
3790
查看次数

“table”是否对数值进行四舍五入?

我的矩阵points(120 x 2) 有 120 个向量。我计算了它们的平方范数:

norms2 <- apply(points, 1L, crossprod)
Run Code Online (Sandbox Code Playgroud)

我将这些平方范数制成表格:

> table(norms2)
norms2
0.410691055416468  1.62481505182984  2.37518494817016  3.58930894458353 
               30                30                30                30 
Run Code Online (Sandbox Code Playgroud)

我们可以看到范数平方有四个可能的值,每个值有 30 个向量。

我提取具有最小平方范数的向量:

> points[norms2 == min(norms2), ]
            [,1]       [,2]
[1,]  0.06698726 -0.6373412
[2,]  0.06698726  0.6373412
[3,] -0.06698726 -0.6373412
[4,] -0.06698726  0.6373412
Run Code Online (Sandbox Code Playgroud)

为什么我只得到 4 个向量,而不是 30 个?

如果我用近似等式进行提取,我会得到 30 个向量:

> dim(points[abs(norms2 - min(norms2)) < 0.001, ])
[1] 30  2
Run Code Online (Sandbox Code Playgroud)

那么解释是什么呢?是否对table值进行四舍五入?

r

6
推荐指数
1
解决办法
46
查看次数

如何使用 SI 符号格式化 noUiSlider 的刻度标签?

这是我的 noUiSlider 的样子:

在此输入图像描述

我想将刻度标签格式化为:1000 -> 1K、900000 -> 900K、5000000 -> 5M 等;即用适当的 SI 符号缩写数字。

library(shiny)
library(shinyWidgets)

ui <- fluidPage(
  
  tags$br(),
  
  noUiSliderInput(
    inputId = "noui", 
    label = "Slider vertical:",
    value =  50,
    orientation = "vertical",
    range = list("min" = list(0),
                 "25%" = list(1000, 500),
                 "50%" = list(10000, 50000),
                 "75%" = list(4000000, 500000),
                 "max" = list(10000000)),
    pips = list(
      mode = "values",
      values = list(0, 500, 1000, 900000, 5000000, 10000000),
      density = 4
    ),
    format = wNumbFormat(decimals = 0),
    width = "300px", height …
Run Code Online (Sandbox Code Playgroud)

javascript r shiny nouislider shinywidgets

6
推荐指数
1
解决办法
134
查看次数

用 R 转换抽象语法树

例如,给定一个算术表达式,x + y*z我想将其转换为add(x, multiply(y, z)).

在这里发现了一个有用的功能

> getAST <- function(ee) purrr::map_if(as.list(ee), is.call, getAST)
> getAST(quote(x + y*z)) 
[[1]]
`+`

[[2]]
x

[[3]]
[[3]][[1]]
`*`

[[3]][[2]]
y

[[3]][[3]]
z
Run Code Online (Sandbox Code Playgroud)

可以使用它rapply(result, as.character, how = "list")来获取字符而不是符号。

如何从这个 AST 中得到add(x, multiply(y, z))(结果)?当有一些括号时,这会变得更加复杂:

> getAST(quote((x + y) * z)) 
[[1]]
`*`

[[2]]
[[2]][[1]]
`(`

[[2]][[2]]
[[2]][[2]][[1]]
`+`

[[2]][[2]][[2]]
x

[[2]][[2]][[3]]
y



[[3]]
z
Run Code Online (Sandbox Code Playgroud)

我不要求答案必须使用该getAST功能。这只是一种可行的方法。

当然,在我的实际用例中,表达式更长。


这是没有括号时的情况的解决方案(我认为):

getAST <- function(ee) purrr::map_if(as.list(ee), is.call, getAST)

ast …
Run Code Online (Sandbox Code Playgroud)

r arithmetic-expressions symbolic-math abstract-syntax-tree

5
推荐指数
1
解决办法
86
查看次数