回答
这是我刚才写的东西 - 有点长,但你可以复制整个东西。它处理可变大小的输入并产生一个美妙的阴影 - 以std和min/max。信号应该是2D的。如果您需要绘制两个信号的一个版本 - 只问:)
function H = plotp(varargin)
switch nargin
case{1}
signal = varargin{1};
time = 1:size(signal,2);
prop = 'r-';
new_figure = true;
case{2}
time = varargin{1};
signal = varargin{2};
prop = 'r-';
new_figure = true;
case{3}
time = varargin{1};
signal = varargin{2};
prop = varargin{3};
new_figure = true;
case{4}
time = varargin{1};
signal = varargin{2};
prop = varargin{3};
new_figure = varargin{4};
end
if ischar(new_figure)
temp7 = regexpi(new_figure,'true');
if isempty(temp7)
new_figure = false;
H = get(0,'CurrentFigure');
else
new_figure = true;
end
elseif isnumeric(new_figure)
H = new_figure;
new_figure = false;
end
% prepare vectors for plotting
time2 = [time fliplr(time)];
sigm = nanmean(signal);
sigs = nanstd(signal);
sigms = [sigm-sigs fliplr(sigm+sigs)];
sigmin = nanmin(signal);
sigmax = nanmax(signal);
sigmm = [sigmin fliplr(sigmax)];
% check color
if strcmpi(prop(1),'r')
c1 = [1 0 0];
elseif strcmpi(prop(1),'g')
c1 = [0 1 0];
elseif strcmpi(prop(1),'b')
c1 = [0 0 1];
else
c1 = [1 1 1];
end
color1 = c1 + .7*(1-c1);
color2 = c1 + .8*(1-c1);
%
if length(prop) == 1
prop(2) = '-';
end
if new_figure
H = figure;
else
figure(H);
end
whole_screen = get(0,'ScreenSize');
% max figure size - add
fig_size = whole_screen + [-4 -4+2*32 +4+4 4+4-2*32];
set(H,'OuterPosition',fig_size);
plot(time,sigm,prop,'LineWidth',1.5)
hold all
fill(time2(~isnan(sigms)), sigms(~isnan(sigms)),color1,'EdgeColor',color1,'FaceAlpha', 0.4);
fill(time2(~isnan(sigmm)), sigmm(~isnan(sigmm)),color2,'EdgeColor',color2,'FaceAlpha', 0.3);
legend([{'Mean'} {'\pm Stddev'} {'Min/Max'} ],'Location','Best')
哇,非常感谢! – 2013-03-07 00:31:59
很高兴帮助。从来没有想过我会把它从抽屉里拿出来:) – 2013-03-07 00:33:47
我想这是一个常见而重要的问题。我不知道为什么sbdy将问题标记为-1 .... – 2013-03-07 00:49:01
,你可以画出三条线,一个作为平均值,另两个为+和 - 个标准差。
如果你感觉特别受虐狂,你可以计算你的线的置信区间并绘制它。
我知道,但我想要std或CI作为填充区域或粗线。任何想法如何做到这一点?避免使用Matlab中的“填充”,这是很麻烦的... – 2013-03-06 23:53:29
发现这个从MrMartin代码很好:>> plot_variance = @(x,lower,upper,color)set(fill([x,x(end: - 1:1)],[上,下(端:-1:1)],颜色), 'EdgeColor',颜色); – 2013-03-07 00:47:57
- 1. ggplot2 barplot中的可变宽度条R
- 2. Canvas中的线条宽度
- 3. 宽度可变
- 4. 线性有生成可变宽度
- 5. 可变宽度线轮廓着色器
- 6. 我可以在HTML5画布上绘制每条线段宽度可变的线条吗?
- 7. 在HTML画布上以不断变化的线条宽度绘制线条
- 8. Matlab中的二维线条渐变色
- 9. Matlab:改变线条规格
- 10. 可变宽度div的可变宽度形式?
- 11. MATLAB:页面宽度线与发布宽度
- 12. 如何在Matlab中减少直方图上条的宽度
- 13. 如何水平居中可变宽度的较大的div,可变宽度
- 14. 如何在Matlab中对齐colorbar刻度线标签和线条
- 15. CSS可变宽度的div
- 16. CSS中的可变宽度内嵌下划线效果
- 17. 图表boundingRect包括线条的宽度
- 18. “线条”视图的最大宽度
- 19. 居中子菜单下的父宽度可变宽度项目
- 20. Matlab中的线条动画
- 21. 表格中的可变宽度列
- 22. Javascript中的可变宽度文本框
- 23. 调整在MATLAB中可用的rowname列宽度
- 24. 线性布局中的线条宽度百分比
- 25. 在Matlab中添加不同长度的线条进行绘制
- 26. UIWebView中的线条高度变化
- 27. 如何在html5画布中为自定义线条制作线条宽度
- 28. 滚动条改变图像的宽度
- 29. 忽略宽度可变
- 30. jQuery可变宽度滑块
这是一个编程/软件开发的问题,涉及到MATLAB,由科学家和工程师,不一定程序员使用的语言。谢谢 – 2013-03-07 17:14:56
我不明白为什么这个问题会关闭。它与编程有关(用Matlab),它是一个有效且有用的问题。我刚从谷歌来到这里寻找解决这个问题的方法,我认为这个解决方案证明了它的实用性。 – robince 2015-04-02 11:54:35