小编Pao*_*tto的帖子

在 R 中重现“带有线条的计算机组合”

各位,

我正在尝试使用 ggplot 在 R 中重现 A. Michael Noll 的著名计算机艺术作品“带线条的计算机组合”。

这是原文:https : //collections.vam.ac.uk/item/O1193787/computer-composition-with-lines-photograph-noll-a-michael/

我已经做到了可以创建一个随机的黑色或白色像素的圆圈,但是我很难创建类似于 Noll 使用的图案。

我可以轻松地创建一个由 1 和 0 组成的矩阵,然后切掉圆外的部分。但是模式(我试过uniform、beta、normal……)肯定和白噪声太相似了,而原作的随机性有结构。

library(tidyverse)

# this generates the matrix
genData <- function(N) {

  # a N*N matrix of ones and zero according to a rounded beta draw
  df <- tibble(x = rep(seq(1,N), N),
         y = rep(seq(1,N), each = N),
         z = round(rbeta(N*N, 2, 1)))

  # centering on zero and cutting away all points outside of a circle
  df %>% 
    mutate(x = …
Run Code Online (Sandbox Code Playgroud)

random r ggplot2

12
推荐指数
1
解决办法
97
查看次数

带有误差条的Dotplot,两个系列,轻微抖动

我收集了几项研究的数据.对于每项研究,我都对性别变量的平均值感兴趣,如果这显着不同.对于每项研究,我对男性和女性都有平均值和95%置信区间.

我想做的是类似的事情: 在此输入图像描述

我使用了几种类型的点图(dotplot,dotplot2,Dotplot),但没有完全实现.

使用Dotplotfrom Hmisc我设法有一个系列及其错误栏,但我对如何添加第二个系列感到茫然.

我使用Dotplot并得到了误差条的垂直结束,遵循这里给出的建议.

这是我正在使用的代码的一个工作示例

data<-data.frame(ID=c("Study1","Study2","Study3"),avgm=c(2,3,3.5),avgf=c(2.5,3.3,4))
data$lowerm <- data$avgm*0.9 
data$upperm <- data$avgm*1.1
data$lowerf <- data$avgf*0.9
data$upperf <- data$avgf*1.1

# Create the customized panel function
mypanel.Dotplot <- function(x, y, ...) {
  panel.Dotplot(x,y,...)
  tips <- attr(x, "other")
  panel.arrows(x0 = tips[,1], y0 = y, 
               x1 = tips[,2], y1 = y, 
               length = 0.05, unit = "native",
               angle = 90, code = 3)
}

library(Hmisc)
Dotplot(data$ID ~ Cbind(data$avgm,data$lowerm,data$upperm), col="blue", pch=20, panel = mypanel.Dotplot,
        xlab="measure",ylab="study")
Run Code Online (Sandbox Code Playgroud)

这绘制了三列数据,男性的平均值(avgm),以及95%置信区间(lowerm和upperm)的下限和上限.我有其他三个系列,对于相同的研究,对女性受试者做同样的工作(avgf,lowerf,upperf). …

plot r lattice confidence-interval

11
推荐指数
1
解决办法
8702
查看次数

根据条件更改ggplot2中某些轴标签的格式

我有一个ggplot,我想根据预定义的条件只突出显示一些特定的x轴标签.

我知道轴文本是由

theme(axis.text = element_text(...))
Run Code Online (Sandbox Code Playgroud)

但这适用于轴的所有标签.我想要的是格式更改只应用于条件= 1的标签.

r ggplot2 axis-labels

9
推荐指数
1
解决办法
4633
查看次数

Logistic回归+直方图与ggplot2

我有一些二进制数据,我想绘制逻辑回归线同一图中0和1的相对频率的直方图.

我在这里使用popbio软件包遇到了一个非常好的实现:shizuka lab的页面

这里有一个与图书馆(popbio)一起运行的MWE(礼貌的shizuka实验室)

bodysize=rnorm(20,30,2) # generates 20 values, with mean of 30 & s.d.=2
bodysize=sort(bodysize) # sorts these values in ascending order.
survive=c(0,0,0,0,0,1,0,1,0,0,1,1,0,1,1,1,0,1,1,1) # assign 'survival' to these 20 individuals non-randomly... most mortality occurs at smaller body size
dat=as.data.frame(cbind(bodysize,survive))

#and now the plot
library(popbio)
logi.hist.plot(bodysize,survive,boxp=FALSE,type="hist",col="gray")
Run Code Online (Sandbox Code Playgroud)

哪个产生

在此输入图像描述

现在,是否可以使用ggplot2执行此操作?

r histogram ggplot2 logistic-regression

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

R 中的非线性离散优化

我有一个简单的(实际上是经济学标准)非线性约束离散最大化问题需要在 R 中解决,但遇到了麻烦。我找到了部分问题的解决方案(非线性最大化;离散最大化),但没有找到所有问题的联合。

\n\n

问题就在这里。消费者想要购买三种产品(凤梨、香蕉、饼干),知道价格并且预算为 20\xe2\x82\xac。他喜欢多样化(即,如果可能的话,他希望拥有所有三种产品),并且他的满意度随着消费量的增加而降低(他更喜欢他的第一块饼干,而不是他的第 100 块)。

\n\n

他希望最大化的函数是

\n\n

函数最大化

\n\n

当然,由于每个人都有一个价格,而且他的预算有限,他在以下约束下最大化了这个功能:

\n\n

在此输入图像描述

\n\n

我想做的是找到满足约束条件的最优购买清单(N 条香蕉,M 条香蕉,K 条饼干)。

\n\n

如果问题是线性的,我会简单地使用 linprog::solveLP()。但目标函数是非线性的。\n如果问题具有连续性质,则将有一个简单的解析解。

\n\n

这个问题是离散和非线性的,我不知道如何进行。

\n\n

这里有一些可以玩的玩具数据。

\n\n
df <- data.frame(rbind(c("ananas",2.17),c("banana",0.75),c("cookie",1.34)))\nnames(df) <- c("product","price")\n
Run Code Online (Sandbox Code Playgroud)\n\n

我想要一个优化例程,为我提供 (N,M,K) 的最佳购买清单。

\n\n

有什么提示吗?

\n

optimization r constraints discrete-mathematics

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

使用R和dplyr扩展和离散时间序列数据

我有一个实验数据.我们计划人类决策.我们有一组交替(我们称之为A,B,C,D)来重复选择超过30秒的时间段,我们计时第一个,然后是第二个,然后是第N个选择(主题可以改变他们的想法).数据看起来像这样(以毫秒为单位的时间):

subject time    choice
1       2204    A
1       3673    B
1       8435    C
1       12640   B
1       24031   A
Run Code Online (Sandbox Code Playgroud)

我想离散和扩展数据,以便能够在每一秒选择选项; 每次没有选择时(默认)默认为0.理想情况下,它看起来像这样

subject second  choice
1       1       0
1       2       0
1       3       A
1       4       B
1       5       B
1       6       B
1       7       B
1       8       B
1       9       C
1       10      C
1       11      C
1       12      C
1       13      B
Run Code Online (Sandbox Code Playgroud)

......依此类推至秒= 30.

基于tidyverse软件包和dplyr管道的解决方案将是最受欢迎的.但我对其他解决方案持开放态度.谢谢!

r time-series dplyr tidyverse

2
推荐指数
1
解决办法
351
查看次数