|
點(diǎn)擊上方藍(lán)字和“好玩的MATLAB”一起快樂玩耍吧!
etdrm0lpcbh6408492107.jpg (236.67 KB, 下載次數(shù): 2)
下載附件
保存到相冊
etdrm0lpcbh6408492107.jpg
2024-9-16 17:22 上傳
好玩的matlab
帶你解鎖不一樣的matlab新玩法
今天介紹一下交叉折現(xiàn)之間的分色填充,喜歡此推文的小伙伴們記得點(diǎn)贊+關(guān)注+分享!【尊重作者勞動成果,轉(zhuǎn)載請注明推文鏈接和公眾號名】
效果圖
aborpisk3wk6408492207.png (78.13 KB, 下載次數(shù): 2)
下載附件
保存到相冊
aborpisk3wk6408492207.png
2024-9-16 17:22 上傳
xlrjr0d5nhn6408492307.gif (114.24 KB, 下載次數(shù): 3)
下載附件
保存到相冊
xlrjr0d5nhn6408492307.gif
2024-9-16 17:22 上傳
交叉折線圖之間分色填充概念介紹交叉折線圖之間的分色填充是一種高級數(shù)據(jù)可視化技巧,它涉及在兩條或多條在一定區(qū)間內(nèi)交叉或重疊的折線圖之間應(yīng)用不同的顏色填充。此技術(shù)主要用于圖形化地表示兩組或多組數(shù)據(jù)之間的比較和對比,特別是它們隨時(shí)間或其他變量的變化。應(yīng)用領(lǐng)域金融市場分析:展現(xiàn)不同金融工具或指數(shù)在時(shí)間序列中的表現(xiàn),突出市場波動或趨勢。
生物醫(yī)學(xué)研究:比較不同治療方法或條件下的生物標(biāo)志物變化。
環(huán)境監(jiān)測:可視化不同環(huán)境因素(如溫度、濕度)隨時(shí)間的變化及其相互作用。
市場調(diào)研:對比不同消費(fèi)群體的購買習(xí)慣或品牌偏好隨時(shí)間的變化。
優(yōu)點(diǎn)增強(qiáng)數(shù)據(jù)解釋性:通過顏色差異,使得數(shù)據(jù)集間的比較更加直觀和易于理解。
強(qiáng)調(diào)數(shù)據(jù)動態(tài):特別適用于展現(xiàn)數(shù)據(jù)隨時(shí)間或其他變量的動態(tài)變化。
視覺吸引力:相比于傳統(tǒng)的折線圖,顏色填充增加了圖表的視覺吸引力,提高了觀眾的關(guān)注度。
缺點(diǎn)顏色選擇的重要性:不當(dāng)?shù)念伾x擇可能導(dǎo)致誤解或視覺混淆,特別是在色盲觀眾中。
數(shù)據(jù)解讀的準(zhǔn)確性:過度依賴顏色填充可能會忽視數(shù)據(jù)的其他重要方面,如統(tǒng)計(jì)顯著性。
圖表復(fù)雜性:過多的數(shù)據(jù)集或顏色可能使圖表過于復(fù)雜,難以解讀。
結(jié)論交叉折線圖之間的分色填充通過顏色的視覺對比強(qiáng)化了數(shù)據(jù)間的差異和關(guān)系。正確使用時(shí),它可以有效地傳達(dá)復(fù)雜信息,并幫助觀眾理解數(shù)據(jù)動態(tài)。然而,為了保持圖表的有效性和易讀性,需要仔細(xì)考慮顏色選擇和圖表設(shè)計(jì)。
繪圖工具函數(shù)fillArea收藏、點(diǎn)贊=學(xué)會function fillArea(x1, y1, x2, y2, fillColor1, fillColor2, alphaValue)%--------------------------------------------------------------------------% @Author: 好玩的Matlab && 豬豬% @公眾號:好玩的Matlab% @Created: 09,18,2023% @Email: 2377389590@qq.com% 尊重勞動成果,轉(zhuǎn)載請備注推文鏈接和公眾號名,嚴(yán)禁商用。%--------------------------------------------------------------------------plot(x1,y1,'color','none','HandleVisibility','off');plot(x2,y2,'color','none','HandleVisibility','off');% 調(diào)用函數(shù)x1 = x1(:); y1 = y1(:);x2 = x2(:); y2 = y2(:);% 查找交點(diǎn)[xi, yi] = polyxpoly(x1, y1, x2, y2);% 裁剪到共同的 x 軸范圍xRange = [max(min(x1), min(x2)), min(max(x1), max(x2))];yRange = [min(min(y1), min(y2)), max(max(y1), max(y2))];%邊界交叉點(diǎn)[xa1,ya1]=polyxpoly(x1, y1,[xRange(1),xRange(1)],yRange);[xb1,yb1]=polyxpoly(x1, y1,[xRange(2),xRange(2)],yRange);[xa2,ya2]=polyxpoly(x2, y2,[xRange(1),xRange(1)],yRange);[xb2,yb2]=polyxpoly(x2, y2,[xRange(2),xRange(2)],yRange);% 交叉點(diǎn)[x1,y1]=insertData(x1, y1, xi, yi);[x2,y2]=insertData(x2, y2, xi, yi);% 邊界點(diǎn)插入[x1, y1] = insertData(x1, y1, xa1, ya1);[x1, y1] = insertData(x1, y1, xb1, yb1);[x2, y2] = insertData(x2, y2, xa2, ya2);[x2, y2] = insertData(x2, y2, xb2, yb2);% 提取范圍數(shù)據(jù)xNew1 = x1(x1 >= xRange(1) & x1 2));yNew1 = y1(x1 >= xRange(1) & x1 2));xNew2 = x2(x2 >= xRange(1) & x2 2));yNew2 = y2(x2 >= xRange(1) & x2 2));[X1, Y1, X2, Y2] = equaLen(xNew1, yNew1, xNew2, yNew2);disp(char([20844 20247 21495 58 22909 29609 30340 77 97 116 108 97 98]))hold onfor i = 1:length(X1) - 1 % 確定填充顏色 if Y1(i) > Y2(i) || (Y1(i) == Y2(i) && Y1(i+1) > Y2(i+1)) color = fillColor1; else color = fillColor2; end % 填充 fill([X1(i) X1(i+1) X1(i+1) X1(i)], [Y1(i) Y1(i+1) Y2(i+1) Y2(i)], ... color, 'EdgeColor', 'none', 'FaceAlpha', alphaValue, 'HandleVisibility', 'off');end function [x1, y1, x2, y2] = equaLen(x1, y1, x2, y2) % 確保兩個(gè)多邊形具有相同數(shù)量的點(diǎn) % 同時(shí)保留原有的數(shù)據(jù)點(diǎn) % 確定 x 的范圍和新的 x 網(wǎng)格 xMin = min(min(x1), min(x2)); xMax = max(max(x1), max(x2)); % 生成一個(gè)包含所有原始 x 值的合并且排序的數(shù)組 xAll = unique([x1; x2]); % 如果合并后的 xAll 長度小于兩個(gè)數(shù)據(jù)集中最長的長度 % 則在 xAll 中插入額外的點(diǎn)以匹配最長的數(shù)據(jù)集長度 maxLength = max(length(x1), length(x2)); if length(xAll) additionalPoints = linspace(xMin, xMax, maxLength - length(xAll) + 2); xAll = unique([xAll; additionalPoints(:)]); end % 插值 y1 = interp1(x1, y1, xAll, 'linear', 'extrap'); y2 = interp1(x2, y2, xAll, 'linear', 'extrap'); % 更新 x1 和 x2 x1 = xAll; x2 = xAll; end function [xUpdated, yUpdated] = insertData(xMain, yMain, xInsert, yInsert) % 將 xInsert 和 yInsert 中的數(shù)據(jù)插入到 xMain 和 yMain 中 % 并確保結(jié)果是唯一的并且按照 x 的值排序 % 組合 xMain 和 xInsert xCombined = [xMain; xInsert]; % 組合 yMain 和 yInsert yCombined = [yMain; yInsert]; % 獲取唯一的 x 值及其索引,并保持排序 [xUnique, idxUnique] = unique(xCombined, 'sorted'); % 使用這些索引過濾 yCombined yUnique = yCombined(idxUnique); % 返回更新后的 x 和 y xUpdated = xUnique; yUpdated = yUnique; endend
函數(shù)輸入?yún)?shù):x1, y1, x2, y2: 這些參數(shù)分別代表兩條曲線的 x 和 y 坐標(biāo)值。fillColor1, fillColor2: 用于填充的兩種顏色。alphaValue: 填充顏色的透明度。使用方法案例 1
clc;clear;close all;x1=pi:0.02:2*pi;x2=0:0.1:3*pi;y1=sin(10*x1);y2=cos(x2);% 定義填充顏色fillColor1 = 'r'; fillColor2 = 'g'; alphaValue=0.3;fillArea(x1, y1, x2, y2, fillColor1, fillColor2, alphaValue);plot(x1,y1,'-k','LineWidth',1.5);plot(x2,y2,'-k','LineWidth',1.5);ax=gca;ax.LineWidth=1.5;ax.FontName='Times new Roman';ax.FontSize=16;ax.Box='off';ax.XMinorTick='on';ax.YMinorTick='on';ax.TickDir='out';ax.GridLineStyle='-.';ax.YGrid='on';ax.XGrid='on';ax.YMinorGrid='off';ax.XMinorGrid='off';ax.MinorGridLineStyle=':';ax.YLim=[-2,2];
3hbfm1olorw6408492407.png (34.68 KB, 下載次數(shù): 0)
下載附件
保存到相冊
3hbfm1olorw6408492407.png
2024-9-16 17:22 上傳
案例 2clc;clear;close all;x1=0:0.1:pi/2;x2=0:0.1:pi/2;y1=x1;y2=x2.^2;fillColor1 = [0.6953, 0.9961, 0.9961]; fillColor2 = [0.9961, 0.6992, 0.9961];alphaValue = 0.9;
fillArea(x1,y1,x2,y2,fillColor1,fillColor2,alphaValue)plot(x1,y1,'-k');plot(x2,y2,'-k');
ax=gca;ax.LineWidth=1.5;ax.XAxisLocation = 'origin';ax.YAxisLocation = 'origin';ax.FontName='Times new Roman';ax.FontSize=16;ax.Box='off';ax.XMinorTick='on';ax.YMinorTick='on';ax.TickDir='out';ax.GridLineStyle='-.';ax.YGrid='on';ax.XGrid='on';ax.YMinorGrid='off';ax.XMinorGrid='off';ax.MinorGridLineStyle=':';ax.YLim=[-0.5,2.5];
bqiengp4sfz6408492507.png (21.4 KB, 下載次數(shù): 3)
下載附件
保存到相冊
bqiengp4sfz6408492507.png
2024-9-16 17:22 上傳
案例 3
clc; clear; close all;% 讀取數(shù)據(jù):T = readtable("Book7.xls", 'VariableNamingRule', 'preserve'); % 基準(zhǔn)數(shù)據(jù)data = table2array(T(:,2:3));x = (1:length(data))'; % 確保x是列向量x1=x;x2=x;y1 = data(:,1);y2 = data(:,2);
% 繪制基本曲線和填充區(qū)域% 定義填充顏色fillColor1 = [0.6953, 0.9961, 0.9961]; % 淺藍(lán)色fillColor2 = [0.9961, 0.6992, 0.9961]; % 淺紫色% 定義透明度alphaValue = 0.9;% 調(diào)用函數(shù)figurefillArea(x1, y1, x2, y2, fillColor1, fillColor2, alphaValue);plot(x1, y1, 'b','HandleVisibility','off');plot(x2, y2, 'r','LineWidth',1.5);defaultAxis(x)
figurefillArea(x1(120:260), y1(120:260), x2, y2, fillColor1, fillColor2, alphaValue);plot(x1, y1, 'b','HandleVisibility','off');plot(x2, y2, 'r','LineWidth',1.5);defaultAxis(x)function defaultAxis(x)ax=gca;ax.LineWidth=1.5;ax.FontName='Times new Roman';ax.FontSize=16;ax.Box='off';ax.XMinorTick='off';ax.YMinorTick='on';ax.TickDir='out';ax.YGrid='on';ax.GridLineStyle='-.';ax.YMinorGrid='on';ax.MinorGridLineStyle=':';
ax.XTick=linspace(0,length(x),8);ax.XTickLabel=arrayfun(@num2str, 2006:1:2013, 'UniformOutput', false);ax.YTick=6000:2000:16000;ax.YTickLabel=arrayfun(@num2str, 6000:2000:16000, 'UniformOutput', false);
mainTicks = ax.YTick;minorTicks = mainTicks(1:end-1) + diff(mainTicks) / 2;ax.YAxis.MinorTickValues = minorTicks;ax.Title.String='Dow Jones Industrial Average from 0ct.2006 to Aug.2013';legend('1 year moving average','Location','southeast')end
ach4u0sjrut6408492607.png (41.88 KB, 下載次數(shù): 2)
下載附件
保存到相冊
ach4u0sjrut6408492607.png
2024-9-16 17:22 上傳
qd3dzpspy136408492708.png (41.02 KB, 下載次數(shù): 4)
下載附件
保存到相冊
qd3dzpspy136408492708.png
2024-9-16 17:22 上傳
- -THE END- -
源碼下載:gitee下載:https://gitee.com/iDMatlab/fillArea
4xmkz0ysfmw6408492808.png (69.15 KB, 下載次數(shù): 1)
下載附件
保存到相冊
4xmkz0ysfmw6408492808.png
2024-9-16 17:22 上傳
QQ 群下載:
jcglgyi2mod6408492908.png (514.09 KB, 下載次數(shù): 1)
下載附件
保存到相冊
jcglgyi2mod6408492908.png
2024-9-16 17:22 上傳
fileexchange 下載:
hmmp0203qfe6408493008.png (44 KB, 下載次數(shù): 2)
下載附件
保存到相冊
hmmp0203qfe6408493008.png
2024-9-16 17:22 上傳
參考資料:
【1】數(shù)據(jù)來源 origin 的 Learning Center【2】https://www.zhihu.com/question/37634273/answer/2317006768
3okykqpki3f6408493108.gif (10.71 KB, 下載次數(shù): 5)
下載附件
保存到相冊
3okykqpki3f6408493108.gif
2024-9-16 17:22 上傳
r3mj2ytbnqc6408493208.png (696 Bytes, 下載次數(shù): 3)
下載附件
保存到相冊
r3mj2ytbnqc6408493208.png
2024-9-16 17:22 上傳
送書活動
2owxzuzr4o56408493308.png (696 Bytes, 下載次數(shù): 2)
下載附件
保存到相冊
2owxzuzr4o56408493308.png
2024-9-16 17:22 上傳
210yk5vqfmz6408493408.gif (10.71 KB, 下載次數(shù): 4)
下載附件
保存到相冊
210yk5vqfmz6408493408.gif
2024-9-16 17:22 上傳
包郵贈送 「北京大學(xué)出版社」贊助《AI時(shí)代程序員開發(fā)之道》本書AI時(shí)代程序員開發(fā)之道:知識精進(jìn)+重點(diǎn)解析+上機(jī)實(shí)訓(xùn)+綜合實(shí)戰(zhàn)+ChatGPT應(yīng)用,零基礎(chǔ)入門,讓程序員插上翅膀高效開發(fā)!
wnizx41yt1m6408493508.png (702.16 KB, 下載次數(shù): 3)
下載附件
保存到相冊
wnizx41yt1m6408493508.png
2024-9-16 17:22 上傳
了解更多
▼▼▼
npk3hvxdyd56408493609.jpg (3.14 MB, 下載次數(shù): 2)
下載附件
保存到相冊
npk3hvxdyd56408493609.jpg
2024-9-16 17:22 上傳
【抽獎方式及滿足條件】:
1.關(guān)注「好玩的MATLAB 」公眾號和視頻號
rsqsjsi1l3w6408493709.jpg (183.22 KB, 下載次數(shù): 1)
下載附件
保存到相冊
rsqsjsi1l3w6408493709.jpg
2024-9-16 17:22 上傳
2.給本文點(diǎn)【贊】+【在看】;
3.留言區(qū)評論點(diǎn)贊最多的前3名。
4.本活動只針對從未獲過獎的同學(xué),之前獲過獎的小伙伴,不用參加。
同時(shí)滿足上述4個(gè)條件的讀者朋友,包郵贈送一本。
【開獎時(shí)間】:2023年11月27日中午12點(diǎn)
【領(lǐng)獎方式】:在開獎時(shí)加小編私人微信:idmatlab
掃一掃加管理員微信
3s2gwlavxk16408493809.png (3.14 KB, 下載次數(shù): 1)
下載附件
保存到相冊
3s2gwlavxk16408493809.png
2024-9-16 17:22 上傳
tj4jzupipha6408493909.jpg (71.27 KB, 下載次數(shù): 1)
下載附件
保存到相冊
tj4jzupipha6408493909.jpg
2024-9-16 17:22 上傳
|
|