小编Kat*_*tyB的帖子

在R图窗口中组合基础和ggplot图形

我想生成一个具有base和ggplot图形组合的图形.以下代码使用R的基本绘图函数显示我的图:

t <- c(1:(24*14)) 
P <- 24 
A <- 10 
y <- A*sin(2*pi*t/P)+20

par(mfrow=c(2,2))
plot(y,type = "l",xlab = "Time (hours)",ylab = "Amplitude",main = "Time series")
acf(y,main = "Autocorrelation",xlab = "Lag (hours)", ylab = "ACF")
spectrum(y,method = "ar",main = "Spectral density function", 
         xlab = "Frequency (cycles per hour)",ylab = "Spectrum")
require(biwavelet)
t1 <- cbind(t, y)
wt.t1=wt(t1)
plot(wt.t1, plot.cb=FALSE, plot.phase=FALSE,main = "Continuous wavelet transform",
     ylab = "Period (hours)",xlab = "Time (hours)")
Run Code Online (Sandbox Code Playgroud)

哪个生成 在此输入图像描述

这些面板中的大多数看起来足以让我包含在我的报告中.但是,需要改进显示自相关的图.使用ggplot看起来好多了:

require(ggplot2)
acz <- acf(y, plot=F)
acd <- data.frame(lag=acz$lag, acf=acz$acf) …
Run Code Online (Sandbox Code Playgroud)

plot r base ggplot2 biwavelet

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

将dat文件导入R

为此问题的简单性提前道歉.我试图使用以下代码将.dat文件从网站导入R:

www = "http://www.nilu.no/projects/ccc/onlinedata/ozone/CZ03_2009.dat"
data <- read.delim(www, header = TRUE, sep="\t") 
Run Code Online (Sandbox Code Playgroud)

我想访问data.frame的Value部分,但是,我不确定data.frame的维度,如果我输入ncol(data),它返回1,我期待三个.如何访问此data.frame的"第三"列?

import r

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

matlab中的Latex字体

是否可以将matlab图的字体转换为乳胶字体的字体.例如,我可以通过以下方式修改绘图的字体:

x = -pi:.1:pi;
y = sin(x);
plot(x,y)
set(gca,'FontName','Helvetica');
Run Code Online (Sandbox Code Playgroud)

是否有可能做同样但乳胶字体(我说乳胶字体,因为我不知道字体乳胶的实际名称用作其基本字体).

matlab latex

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

在matlab中用线连接子图

请考虑以下示例代码:

load sumsin; 
s = sumsin+10; % example data series
time = linspace(0,5*24,1000);

figure(1);
subplot(311);
plot(time,s,'k');

subplot(312);
plot(time,s,'k');
hold on;
[s_denoised,~, ~] = wden(s,'minimaxi','s','sln',1,'db4');
plot(time,s_denoised,'r');

subplot(313);
plot(time,s,'k');
hold on;
plot(time,s_denoised,'r');
xlim([20 40]);
Run Code Online (Sandbox Code Playgroud)

导致 在此输入图像描述

我想通过在子图2和3之间插入线来改变这个图,以表明子图3是subplot2的一部分.例如:

在此输入图像描述

如何在matlab中实现这一目标?

编辑:

我想到的是在整个图形上生成一个不可见轴的线条,获得每个子图的位置,20和40的位置将是子图宽度的一定百分比,所以我可以使用此处的注释命令开始一行,然后将相同的方法应用于第三个子图,以将线连接到所需的位置.我试过这个,但到目前为止还没有解决方法.

matlab plot matlab-figure

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

在组合ggplot和基本图形时,使面板具有相同的边距

我已经生成了一个结合了ggplot和基本图形的图形:

t <- c(1:(24*14)) 
P <- 24
A <- 10 
y <- A*sin(2*pi*t/P)+20 
#*****************************************************************************
par(mfrow = c(2,1))
plot(y,type = "l",xlab = "Time (hours)",ylab = "Amplitude")
aa <- par("mai")
plot.new()

require(gridBase)
vps <- baseViewports()
pushViewport(vps$figure)
pushViewport(plotViewport(margins = aa)) ## I use 'aa' to set the margins 
#*******************************************************************************
require(ggplot2)
acz <- acf(y, plot = FALSE)
acd <- data.frame(Lag = acz$lag, ACF = acz$acf)
p <- ggplot(acd, aes(Lag, ACF)) + geom_area(fill = "grey") +
  geom_hline(yintercept = c(0.05, -0.05), linetype = "dashed") +
  theme_bw() …
Run Code Online (Sandbox Code Playgroud)

plot r ggplot2 gtable

10
推荐指数
1
解决办法
1374
查看次数

以R数字指定字体大小

在R中生成数字时是否有一种指定字体大小的方法.这似乎是一个非常基本的要求,但我似乎找不到任何指定字体大小的地方的引用.我可以将数字保存为pdf,如下所示:

setwd("C:\\")
pdf(file="Plot.pdf",family="Times")
plot(x,y);
dev.off()
Run Code Online (Sandbox Code Playgroud)

其中R基本上生成pdf中的数字,而不是在图窗口中.当我寻找改变字体大小的方法时,我看到人们指的是cex = 1.5参数来缩放150%的字体,以及cex.lab,cex.axis等...虽然现在不是一个直接的问题,但我做的是想知道当我发布一些结果时会发生什么,而日志要求字体大小在9到11之间.如何控制R中的这些?任何建议,将不胜感激.

r font-size

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

使用cellfun检查工作空间中是否存在变量

请考虑以下示例:

dat1 = 1;
dat2 = 2;

Variables = {'dat1','dat2'};

a = cellfun(@(x)exist(x,'var'),Variables);

for i = 1:length(Variables);
    a2(i) = exist(Variables{i},'var');
end
Run Code Online (Sandbox Code Playgroud)

为什么'a'和'a2'返回不同的值,即为什么使用cellfun没有声明变量存在于工作空间中?我错过了什么?

matlab exists

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

在matlab中查找范围之间的数据

我有一个相当简单的例子,我想学习最好的解决方案.我有一个数据集:

depth = [0:0.5:20];
Run Code Online (Sandbox Code Playgroud)

我只想从特定范围中选择"深度",例如从2到5.我可以通过以下方式执行此操作:

d1 = find(depth == 2,1,'first');
d2 = find(depth == 5,1,'first');
depth = depth(d1:d2);
Run Code Online (Sandbox Code Playgroud)

这样做有另一种更清洁的方法吗?

indexing matlab

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

将组合字符串和数字输入的单元格数组写入文本文件

考虑以下:

DateTime = {'2007-01-01 00:00';'2007-02-01 00:00';'2007-03-01 00:00'};
Headers = {'Datetime','Data'};
Dat = [100,200,300];

Data = [DateTime,num2cell(Dat')];
Final = [Headers;Data];
Run Code Online (Sandbox Code Playgroud)

如何将"Final"中的数据写入制表符分隔的文本文件中.我知道如何在变量仅由数字输入组成时使用fopen,fprintf等,但我正努力解决这个问题.我试过了:

fid = fopen('C:\Documents\test.txt','wt');
fprintf(fid,'%s\t%s\n',Final{:});
fclose(fid);
Run Code Online (Sandbox Code Playgroud)

但是,这不会生成与matlab中生成的文本格式相同的文本文件.怎样才能解决这个问题?

matlab printf

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

在R中使用apply with assign

请考虑以下示例:

Vars <- c("car","bike","lorry")
Dat <- c(10,20,22)

for (i in 1:length(Vars)){
  assign(Vars[i],Dat[i])
}
Run Code Online (Sandbox Code Playgroud)

在这里,我想在工作区中生成三个变量,这些变量根据条目Vars和中的值命名Dat.目前我正在使用循环,但我一直试图通过使用apply来删除循环,这样做的最佳方法是什么?

loops r apply

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

标签 统计

matlab ×5

r ×5

plot ×3

ggplot2 ×2

apply ×1

base ×1

biwavelet ×1

exists ×1

font-size ×1

gtable ×1

import ×1

indexing ×1

latex ×1

loops ×1

matlab-figure ×1

printf ×1