回答
這是我剛纔寫的東西 - 有點長,但你可以複製整個東西。它處理可變大小的輸入併產生一個美妙的陰影 - 以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