r语言中,画出了频率分布直方图,怎么在图上添加概率分布曲线?

Python015

r语言中,画出了频率分布直方图,怎么在图上添加概率分布曲线?,第1张

可以用内置的graphic包来画,就是plot()和curve()

也可以用ggplot2来画,后者更灵活。

graphic

# 先生成一组随机数

x <- rnorm(2000)

# 画频率直方图, 分30个bin

hist(x, freq = F, breaks = 30) 

# 再画概率分布曲线

lines(density(x, bw=.5), col="red", lwd=2)

2. ggplot2

# 准备工作, 把x设成一个数据集

library(ggplot2)

data <- data.frame(x = x)

# 生成底层和直方图,概率线的图层

p <- ggplot(data, aes(x = x, y = ..density..))

p <- p + geom_histogram(fill = "navy")

p <- p + geom_density(colour = "green")

p

画出来风格不太一样,看你口味了

在matlab中应用fft求傅立叶变换后,如果想画出频谱图,必须用fftshift命令处理变换的结果。

例子如下:

clear

clc

t=0:0.001:2

n=2001

Fs=1000

Fc=200

x=cos(2*pi*Fc*t)

y1=fft(x)

y2=fftshift(y1)

f=(0:2000)*Fs/n-Fs/2

hold on

plot(f,abs(y1),'r')

plot(f,abs(y2),'b')

结果如下图:

图中红色是没经过fftshift处理的频谱图,蓝色是经过处理之后的。结合程序,显然x的频谱应该位于200Hz处,经过fftshift处理的蓝色频谱是正确的。

注意:红色和蓝色的曲线在两边分别关于-250Hz和250Hz对称,这并不是偶然。