我注意到,使用scales
包,可以在轴上显示美元,例如,使用scales = dollar
内部选项scale_y_log10()
.喜欢的选项scales = euro
似乎缺乏.有没有一种简单的方法可以达到同样的效果?
在使用Python进行fft时,我遇到了函数规范化和计算系数平方和的问题.
我的代码如下:
import pandas as pd
import numpy as np
import scipy.fftpack
# sample points
N = 1024
# sample spacing
T = 1.0/512.0
# example function
x = np.linspace(0.0, N*T, N)
y = 1.5 * np.sin(5*2*np.pi*x) + 3 * np.sin(6*2*np.pi*x)
df = pd.DataFrame({'X': x, 'Y': y})
sumy = sum(abs(df['Y'])**2)
df['FFT (Y)'] = scipy.fftpack.fft(df['Y'])/(N/2)
df['FFT (freq)'] = scipy.fftpack.fftfreq(N, T)
sumffty = sum(abs(df['FFT (Y)'])**2)
print sumy, sumffty
Run Code Online (Sandbox Code Playgroud)
根据Parseval的身份,总和应该相等; 然而,它们的关系是256倍(sumffty是较小的一个).我错过了什么?
我有两个显示供需的图,还有一个图,其中我减去了供应的需求以显示产生的不对称性.我想遮蔽x轴和不对称的负面部分之间的区域,以显示赤字的程度.
我目前使用以下代码:
plot.asymmetry <- ggplot(data=df.overview.month,
aes(x=Date.Time, y=Asymmetry)) +
geom_area(data=subset(df.overview.month, Asymmetry < 0),
aes(x=Date.Time, y=Asymmetry))
Run Code Online (Sandbox Code Playgroud)
然而 - 正如可以预料的那样 - 这不会遮蔽geom_line和x轴之间的区域,而只会遮挡不对称数据的负值,这完全不同,如结果图所示:
有没有办法克服这个问题?
/编辑:一些示例数据:
time.initial <- as.POSIXct("2010-12-31 23:00:00", tz="GMT")
Date.Time<-vector()
for(i in 1:24) {
Date.Time[i] <- time.initial + i*3600
}
Demand<-vector()
for(i in 0:23) {
Demand[i+1] <- 155 + 20*sin((pi/12)*i - (pi/2)) + 10*sin((pi/4380)*i + (pi/2))
}
Supply<-vector()
for(i in 0:23) {
Supply[i+1] <- 165 + 5*sin((pi/4380)*i - (pi/2)) + rnorm(1, mean=0, sd=0.20*165)
}
df.overview.month <- data.frame(Date.Time, Demand, Supply, Asymmetry=Supply-Demand)
Run Code Online (Sandbox Code Playgroud) 我有以下功能,我想用ggplot绘制:
f(x)= 3/4,x在0和1之间; x为1/4,介于2和3之间; 其他地方0.
我想出了以下R代码:
eq<-function(x) {
if(x>=0 && x<=1) {
y<-3/4
} else if(x>=2 && x<=3) {
y<-1/4
} else {
y<-0
}
return(y)
}
library(ggplot2)
ggplot(data.frame(x=c(-5,5)), aes(x)) + stat_function(fun=eq)
Run Code Online (Sandbox Code Playgroud)
但是,这会产生一个只有以0为中心的水平线的情节.我做错了什么?