小编jja*_*iak的帖子

保存ggplot的功能

我想创建一个保存图(from ggplot)的函数.我有很多这样的情节,所以这将有助于我更有效地工作.

这是一个数据框:

### creating data frame
music <- c("Blues", "Hip-hop", "Jazz", "Metal", "Rock")
number <- c(8, 7, 4, 6, 11)
df.music <- data.frame(music, number)
colnames(df.music) <- c("Music", "Amount")
Run Code Online (Sandbox Code Playgroud)

然后我创建一个情节:

### creating bar graph (this part is OK)
myplot <- ggplot(data=df.music, aes(x=music, y=number)) +
 geom_bar(stat="identity") +
 xlab(colnames(df.music)[1]) +
 ylab(colnames(df.music)[2]) +
 ylim(c(0,11)) +
 ggtitle("Ulubiony typ muzyki w?ród studentów")
Run Code Online (Sandbox Code Playgroud)

现在我想保存这个情节.pdf.

这有效:

pdf("Myplot.pdf", width=5, height=5)
plot.music.bad
dev.off()
Run Code Online (Sandbox Code Playgroud)

但是我想用一个函数自动化它,这个函数以我想要保存的图为参数.我不知道该怎么做; 这是我尝试过的:

save <- function(myplot){
  plot<- myplot
  pdf("lol.pdf", width=5, height=5)
  plot
  dev.off()
} …
Run Code Online (Sandbox Code Playgroud)

pdf r function save ggplot2

37
推荐指数
3
解决办法
5万
查看次数

geom_bar中的条形宽度相同(position ="dodge")

我想绘制具有相同宽度的条形图.这是我的最小示例代码:

data <- data.frame(A = letters[1:17],
                   B = sample(1:500, 17),
                   C = c(rep(1, 5), rep(2, 6), rep(c(3,4,5), each = 2)))

ggplot(data,
       aes(x = C,  y = B, label = A,
           fill = A)) +
  geom_bar(stat = "identity", position = "dodge") +
  geom_text(position = position_dodge(width = 0.9), angle = 90)
Run Code Online (Sandbox Code Playgroud)

结果如上图所示: 在此输入图像描述

条的宽度取决于变量中给出的组中的观察数C.我想让每个酒吧都有相同的宽度.

facet_grid(~C)作品(条宽度相同)这不是我的意思:

ggplot(data,
       aes(x = C,  y = B, label = A,
           fill = A)) +
  geom_bar(stat = "identity", position = "dodge") +
  geom_text(position = position_dodge(width …
Run Code Online (Sandbox Code Playgroud)

r ggplot2

16
推荐指数
1
解决办法
1万
查看次数

如何在markdown(.Rmd)中包装代码和输出

在我的r部分文档中,我使用长代码,如:

```{r}
output <- "very long query for example url to some website............................................."
output
```
Run Code Online (Sandbox Code Playgroud)

有没有办法不让R自动包装代码,让我们说60个字符后?我尝试过tidy=TRUE, tidy.opts=list(width.cutoff=60)选项,但它不起作用.

我希望输出相同,因为我的查询输出是一些文本.我希望在很多行中显示整个内容,而不仅仅是在一行中开头.我该怎么做?

markdown r knitr r-markdown

14
推荐指数
2
解决办法
8133
查看次数

改变ggplot中只有一个条形的颜色

我想在ggplot中只为一个条形颜色.这是我的数据框:

area <- c("Pó?noc", "Po?udnie", "Wschód", "Zachód")
sale <- c(16.5, 13.5, 14, 13)
df.sale <- data.frame(area, sale)
colnames(df.sale) <- c("Obszar sprzeda?y", "Liczba sprzedanych produktów (w tys.)")
Run Code Online (Sandbox Code Playgroud)

和绘图代码:

plot.sale.bad <- ggplot(data=df.sale, aes(x=area, y=sale, fill=area)) +
  geom_bar(stat="identity") +
  scale_fill_manual(values=c("black", "red", "black", "black")) +
  xlab(colnames(df.sale)[1]) +
  ylab(colnames(df.sale)[2]) +
  ggtitle("Porównanie sprzeda?y") 
Run Code Online (Sandbox Code Playgroud)

我想只有一个彩色条和另外3个有默认颜色(暗灰色,不是黑色,对我来说看起来很糟糕).如何更改仅在条形图上的颜色或如何获取条形图的默认颜色名称而不是黑色?

r colors bar-chart ggplot2

13
推荐指数
2
解决办法
2万
查看次数

在图(R)中围绕圆圈包裹/弯曲文本

有没有机会写出围绕圆圈"包裹"的文字?我的意思是这样的:在此输入图像描述

graphics text r

11
推荐指数
2
解决办法
1646
查看次数

微基准标记作为数据帧或矩阵

有没有办法将函数输出microbenchmark::microbenchmark转换为数据框或矩阵?

例如

v <- rnorm(100)
m <- microbenchmark(mean(v), sum(v))
Run Code Online (Sandbox Code Playgroud)

输出

Unit: nanoseconds
   expr  min     lq    mean median   uq   max neval
mean(v) 6568 6979.5 9348.19   7390 7390 54600   100
 sum(v)    0    1.0  353.57    411  411  8211   100
Run Code Online (Sandbox Code Playgroud)

我想稍后使用这个统计数据,所以我想把结果保存为数据框.但是as.data.frame(m)不起作用.

任何帮助赞赏.

r microbenchmark dataframe

7
推荐指数
1
解决办法
811
查看次数

docker-compose未知MySQL服务器主机'mysql'(气流)

我尝试创建我的Airflow服务.当我单独运行三个码头工作者(没有docker-compose)时,一切正常,但当我尝试使用同样的方法时,docker-compose我得到了错误.似乎气流没有看到数据库.

docker-compose.yml

version: '2'

services:

  mysql:
    image: "someregisty/mysql"
    environment:
     - MYSQL_ROOT_PASSWORD=somepassword

  redis:
    image: "someregisty/redis"

  airflow:
    image: "someregisty/airflow"
    volumes:
     - ./dags:/home/airflow/dags
     - ./logs:/home/airflow/logs
     - ./config/airflow.cfg:/home/airflow/airflow.cfg 
     - ./config/resolv.conf:/etc/resolv.conf
     - ./config/somekeytab.keytab:/home/airflow/airflow.keytab 
    ports:
     - "8484:8080"
    environment:
     - AIRFLOW__CELERY__BROKER_URL=redis://redis:6379/0
     - AIRFLOW__CELERY__CELERY_RESULT_BACKEND=db+mysql://root:somepassword@mysql/airflow
     - AIRFLOW__CORE__SQL_ALCHEMY_CONN=mysql://root:somepassword@mysql/airflow
     - AIRFLOW__CORE__AIRFLOW_HOME=/home/airflow
     - AIRFLOW__CORE__DAGS_FOLDER=/home/airflow/dags/
     - AIRFLOW__CORE__PLUGINS_FOLDER=/home/airflow/plugins/
     - AIRFLOW_SCHEDULER=true
     - AIRFLOW_WEBSERVER=true
     - AIRFLOW_WORKER=true
     - AIRFLOW_KERBEROS=true
     - AIRFLOW_KERBEROS_PRINCIPAL=prj_bdc@DCWP.PL
     - AIRFLOW__KERBEROS__CCACHE=/home/airflow/kerberos.keytab.cache
     - KRB5CCNAME=/home/airflow/kerberos.keytab.cache
    depends_on:
     - redis
     - mysql
Run Code Online (Sandbox Code Playgroud)

我跑

docker-compose up -d
docker-compose exec mysql mysql -u root --password=somepassword -e "create …
Run Code Online (Sandbox Code Playgroud)

mysql docker docker-compose airflow

7
推荐指数
1
解决办法
5894
查看次数

covr 显示 0% 的覆盖率,而所有带有 testthat 的测试都通过了

我已经为大多数功能构建了一个带有单元测试的包。该包具有标准结构:

package:
  - R/
    - file1.R
    - file2.R
    - ...
  - tests/
    - testthat/
      - tests_for_file1.R
      - tests_for_file2.R
      - ...
  - ...
Run Code Online (Sandbox Code Playgroud)

devtools::check()在 R 控制台中调用函数不会给我任何错误

R CMD check results
0 errors | 1 warning  | 1 note
Run Code Online (Sandbox Code Playgroud)

调用一个函数devtools::test()也成功

OK:       72
Failed:   0
Warnings: 0
Skipped:  0
Run Code Online (Sandbox Code Playgroud)

但是covr::package_coverage()给我这个结果

package Coverage: 0.00%
R/file1.R: 0.00%
R/file2.R: 0.00%
...
Run Code Online (Sandbox Code Playgroud)

为什么?

unit-testing code-coverage r testthat covr

7
推荐指数
1
解决办法
558
查看次数

googleUser.getAuthResponse()。id_token不以闪亮方式返回id_token

我正在尝试创建一个闪亮的应用程序,该应用程序首先使用OAuth进行授权(请参阅https://developers.google.com/identity/sign-in/web/sign-in),然后获取一个令牌,并使用来访问使用googlesheets4库的Google工作表。登录过程正常进行,这意味着我可以看到我的电子邮件(以及的其他数据googleUser.getBasicProfile()。似乎没有id_token返回。)最小示例:

app.R

library(shiny)
library(shinyjs)
library(googlesheets4)

shinyApp(
  ui = fluidPage(
    useShinyjs(),  
    tags$head(tags$script(src="https://apis.google.com/js/platform.js")),
    tags$meta(name = "google-signin-scope", content = "profile email"),
    tags$meta(name = "google-signin-client_id", content = "<CLIENT_ID>.apps.googleusercontent.com"),
    includeScript("signin.js"),
    div(id = "signin", class = "g-signin2", "data-onsuccess" = "onSignIn"),
    actionButton("signout", "Sign Out", onclick="signOut();", class="btn-danger"),

    with(tags, dl(dt("Email"), dd(textOutput("g.email")),
                  dt("Token"), dd(textOutput("g.id_token"))
                  )),

    tableOutput("df")
  ),


  server = function(input, output) {

    output$g.email = renderText({ input$g.email }) # here my email is printed in the app
    output$g.id_token = renderText({ input$g.id_token}) # no …
Run Code Online (Sandbox Code Playgroud)

r google-authentication google-oauth shiny google-sheets-api

7
推荐指数
1
解决办法
149
查看次数

在r中添加点到3d图

我是初学者,在R中用3D绘图,我需要帮助.我试图绘制一些简单的抛物面

library(rgl)
x <- seq(-1,1, 0.2)
y <- x
f <- function(x,y){
   -(x^2+y^2)
}
z <- outer(x,y, "f")
persp3d(x, y, z, col="gray")
Run Code Online (Sandbox Code Playgroud)

所以,我的问题是:

  1. 我可以只绘制网格,还是使颜色透明,还可以看到"在后面"的部分?

  2. 如何在绘图上添加点(在曲面上,例如以其他颜色点(1,1,2)绘制)?

3d graphics r

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