虽然我已经找到了关于 scipy.ndimage.convolve 函数的文档并且我“实际上知道它是做什么的”,但当我尝试计算结果数组时,我无法遵循数学公式。让我们举个例子:
a = np.array([[1, 2, 0, 0],`
[5, 3, 0, 4],
[0, 0, 0, 7],
[9, 3, 0, 0]])
k = np.array([[1,1,1],[1,1,0],[1,0,0]])
from scipy import ndimage
ndimage.convolve(a, k, mode='constant', cval=0.0)
# Why is the result like this ?
array([[11, 10, 7, 4],
[10, 3, 11, 11],
[15, 12, 14, 7],
[12, 3, 7, 0]])
Run Code Online (Sandbox Code Playgroud)
我将不胜感激逐步计算。
我想对齐两个面板图,其中的一个产生facet_wrap于ggplot以下方式(注:A组需要留空):
但是,我注意到面板 B 的 y 轴与从最后一个到面板 C 的绘图的 y 轴不完全对齐(尽管axis = 'lb'在两个方面都有选项)。
代码
# Load libraries
library(tidyverse)
library(cowplot)
# Create two facetted plots
p1 <- ggplot(data = diamonds, aes(x = carat, y = price)) +
facet_wrap(~ cut, scales = "free_y", ncol = 5) +
geom_point(size=0.5)
p2<- ggplot(data = filter(diamonds, price < 900 & (cut == "Fair" | cut == "Good" )), aes(x = carat, y = price)) +
facet_wrap(~ cut, scales = "free_y", ncol …Run Code Online (Sandbox Code Playgroud) 目标
我试图在用R中的ggplot生成的图中填充两行之间的区域.我想在水平线上方的线之间填充不同于水平线以下的颜色.
我成功地用一种颜色填充两条线之间的所有东西,但是,我没有设法用两种不同的颜色区分垂直线的上方和下方.
码
set.seed(123)
# Load packages
library(tidyverse)
# Create sample dataframe
df <- data.frame(x=seq(1,50,1),y=runif(50, min = 0, max = 10))
# Generate plot
ggplot(data = df, aes(x = x, y = y)) +
geom_line() +
geom_hline(yintercept = 5) +
theme_classic() +
geom_ribbon(aes(ymin=5,ymax=y), fill="blue")
Run Code Online (Sandbox Code Playgroud)
题
如何用不同的颜色填充垂直线上方和下方的空间?
我有一个简单的数据框:
df <- data.frame(test = c("test_A_1_1.txt", "test_A_2_1.txt", "test_A_3_1.txt"), value = c(0.51, 0.52, 0.56))
test value
1 test_A_1_1.txt 0.51
2 test_A_2_1.txt 0.52
3 test_A_3_1.txt 0.56
Run Code Online (Sandbox Code Playgroud)
预期产量
我想将数字复制到第1列的字符串末尾,并将其分别放在第3列或第4列中,如下所示:
test value new new
1 test_A_1.txt 0.51 1 1
2 test_A_2.txt 0.52 2 1
3 test_A_3.txt 0.56 3 1
Run Code Online (Sandbox Code Playgroud)
尝试
使用以下代码,我可以从字符串中提取数字:
library(stringr)
as.numeric(str_extract_all("test_A_3.txt", "[0-9]+")[[1]])[1] # Extracts the first number
as.numeric(str_extract_all("test_A_3.txt", "[0-9]+")[[1]])[2] # Extracts the second number
Run Code Online (Sandbox Code Playgroud)
我想将此代码应用于第一列的所有值:
library(tidyverse)
df %>% mutate(new = as.numeric(str_extract_all(df$test, "[0-9]+")[[1]])[1])
Run Code Online (Sandbox Code Playgroud)
但是,这导致new只有数字的列1。我究竟做错了什么?
我有 100 个关于 100 个不同位置的数据的数据集。
我想为每个数据集获取相同变量的子集。就像是:
dataset1<-subset(dataset1, which(gender=='F'))
dataset2<-subset(dataset2, which(gender=='F'))
dataset3<-subset(dataset3, which(gender=='F'))
dataset4<-subset(dataset4, which(gender=='F'))
Run Code Online (Sandbox Code Playgroud)
.....
如何同时完成所有 100 个数据集而不是编写 100 行?
假设我想在 R 的序列中找到最长长度的连续数字(不包括 0)。
示例:(0,2,3,0,5)在这种情况下,它应该返回2.
我想出的解决方案如下:
A1 <- c(1, 1, 0,1,1,1)
length =NULL
B<-rle(A1==0)
C<-B$lengths
D<-B$values
for(i in 1:length(C)){
if(D[i]==FALSE){length[i]=C[i]}
}
length <- length [!is.na(length )]
max(length)
[1] 3
Run Code Online (Sandbox Code Playgroud)
如何在R中的向量中找到最长的非零数字序列?
我想R用特定的颜色填充 ggplot 的背景。
数据帧包含3列:time,value,和color。
df <- data.frame(time = seq(1, 100, 1),
value = c(runif(n = 45, min = 1, max= 10), runif(10, 40, 50), runif(45, 70, 90)),
color = c(rep("green", 45), rep("orange", 10), rep("red", 45)))
Run Code Online (Sandbox Code Playgroud)
我可以通过以下方式填充情节的背景:
library(tidyverse)
ggplot(df) +
geom_line(aes(x = time, y = value)) +
annotate("rect", xmin=-Inf, xmax= 45, ymin = -Inf, ymax = Inf, alpha = 0.2, fill = "green") +
annotate("rect", xmin=45, xmax= 55, ymin = -Inf, ymax = …Run Code Online (Sandbox Code Playgroud) 我有一个有显着重叠的图,我想在其中抖动 geom_line 和 geom_point。这个解决方案(如何以相同的幅度抖动 geom_line 和 geom_point?)过去对我来说效果很好,但由于某种原因我无法让它在这个数据集上工作。
这是我的数据:
dput(test)
structure(list(individual_code = structure(c(1L, 1L, 1L, 1L,
1L, 1L, 2L, 2L, 2L, 2L, 2L, 2L, 3L, 3L, 3L, 3L, 3L, 3L, 4L, 4L,
4L, 4L, 4L, 4L, 5L, 5L, 5L, 5L, 5L, 5L, 6L, 6L, 6L, 6L, 6L, 6L,
7L, 7L, 7L, 7L, 7L, 7L, 8L, 8L, 8L, 8L, 8L, 8L, 9L, 9L, 9L, 9L,
9L, 9L, 10L, 10L, 10L, 10L, 10L, 11L, 11L, 11L, 11L, 11L, 11L,
12L, 12L, …Run Code Online (Sandbox Code Playgroud) 我想将特定的 unicode 字符保存到 .pdf 文件中ggsave。
示例代码
library(ggplot2)
ggplot() +
geom_point(data = data.frame(x=1, y=1), aes(x,y), shape = "\u2191") +
geom_point(data = data.frame(x=2, y=2), aes(x,y), shape = "\u2020")
ggsave("test.pdf", plot = last_plot()), width = 40, height = 40, units = "mm")
Run Code Online (Sandbox Code Playgroud)
但是,在保存.pdfunicode 字符时,将其转换为三个点...
尝试修复它
cairo_pdf在ggsave-> 中使用该设备没有工作。题
如何在 pdf 中同时使用两个 unicode 字符?
> sessionInfo()
R version 3.6.2
Platform: x86_64-apple-darwin15.6.0 (64-bit)
Running under: macOS Catalina 10.15.5
Run Code Online (Sandbox Code Playgroud) 问题
我试图了解如何手动向由infacet_wrap()中的函数生成的 y 轴中断提供 y 轴中断。ggplot2R
最小可重复示例
免责声明:我从R studio 社区借用了以下示例
使用以下代码,您可以根据 de 数据集中的 y 轴值指定 y 轴分隔符。
library(ggplot2)
diamonds2 <- subset(diamonds, !(cut == "Fair" & price > 5000))
my_breaks <- function(x) { if (max(x) < 6000) seq(0, 5000, 1000) else seq(0, 15000, 5000) }
ggplot(data = diamonds2, aes(x = carat, y = price)) +
facet_wrap(~ cut, scales = "free_y") +
geom_point() +
scale_y_continuous(breaks = my_breaks)
Run Code Online (Sandbox Code Playgroud)
问题
我希望能够基于facet(在本例中:基于钻石的“切割”)手动指定中断。例如,我想将“Fair”剪辑的休息时间设置为seq(1000, 2500, 5000),将“Good”剪辑的休息时间设置为seq(1500, 3000, …