點(diǎn)擊上方藍(lán)字和“好玩的MATLAB”一起快樂(lè)玩耍吧!
m42rzx5oshn64015139327.jpg (236.67 KB, 下載次數(shù): 1)
下載附件
保存到相冊(cè)
m42rzx5oshn64015139327.jpg
2024-9-9 17:21 上傳
好玩的matlab
帶你解鎖不一樣的matlab新玩法
今天介紹一下交叉折現(xiàn)之間的分色填充,喜歡此推文的小伙伴們記得點(diǎn)贊+關(guān)注+分享!【尊重作者勞動(dòng)成果,轉(zhuǎn)載請(qǐng)注明推文鏈接和公眾號(hào)名】
效果圖
o0zockmicay64015139427.png (78.13 KB, 下載次數(shù): 0)
下載附件
保存到相冊(cè)
o0zockmicay64015139427.png
2024-9-9 17:21 上傳
c1eiijes2ba64015139527.gif (114.24 KB, 下載次數(shù): 0)
下載附件
保存到相冊(cè)
c1eiijes2ba64015139527.gif
2024-9-9 17:21 上傳
交叉折線圖之間分色填充概念介紹交叉折線圖之間的分色填充是一種高級(jí)數(shù)據(jù)可視化技巧,它涉及在兩條或多條在一定區(qū)間內(nèi)交叉或重疊的折線圖之間應(yīng)用不同的顏色填充。此技術(shù)主要用于圖形化地表示兩組或多組數(shù)據(jù)之間的比較和對(duì)比,特別是它們隨時(shí)間或其他變量的變化。應(yīng)用領(lǐng)域金融市場(chǎng)分析:展現(xiàn)不同金融工具或指數(shù)在時(shí)間序列中的表現(xiàn),突出市場(chǎng)波動(dòng)或趨勢(shì)。
生物醫(yī)學(xué)研究:比較不同治療方法或條件下的生物標(biāo)志物變化。
環(huán)境監(jiān)測(cè):可視化不同環(huán)境因素(如溫度、濕度)隨時(shí)間的變化及其相互作用。
市場(chǎng)調(diào)研:對(duì)比不同消費(fèi)群體的購(gòu)買習(xí)慣或品牌偏好隨時(shí)間的變化。
優(yōu)點(diǎn)增強(qiáng)數(shù)據(jù)解釋性:通過(guò)顏色差異,使得數(shù)據(jù)集間的比較更加直觀和易于理解。
強(qiáng)調(diào)數(shù)據(jù)動(dòng)態(tài):特別適用于展現(xiàn)數(shù)據(jù)隨時(shí)間或其他變量的動(dòng)態(tài)變化。
視覺(jué)吸引力:相比于傳統(tǒng)的折線圖,顏色填充增加了圖表的視覺(jué)吸引力,提高了觀眾的關(guān)注度。
缺點(diǎn)顏色選擇的重要性:不當(dāng)?shù)念伾x擇可能導(dǎo)致誤解或視覺(jué)混淆,特別是在色盲觀眾中。
數(shù)據(jù)解讀的準(zhǔn)確性:過(guò)度依賴顏色填充可能會(huì)忽視數(shù)據(jù)的其他重要方面,如統(tǒng)計(jì)顯著性。
圖表復(fù)雜性:過(guò)多的數(shù)據(jù)集或顏色可能使圖表過(guò)于復(fù)雜,難以解讀。
結(jié)論交叉折線圖之間的分色填充通過(guò)顏色的視覺(jué)對(duì)比強(qiáng)化了數(shù)據(jù)間的差異和關(guān)系。正確使用時(shí),它可以有效地傳達(dá)復(fù)雜信息,并幫助觀眾理解數(shù)據(jù)動(dòng)態(tài)。然而,為了保持圖表的有效性和易讀性,需要仔細(xì)考慮顏色選擇和圖表設(shè)計(jì)。
繪圖工具函數(shù)fillArea收藏、點(diǎn)贊=學(xué)會(huì)function fillArea(x1, y1, x2, y2, fillColor1, fillColor2, alphaValue)%--------------------------------------------------------------------------% @Author: 好玩的Matlab && 豬豬% @公眾號(hào):好玩的Matlab% @Created: 09,18,2023% @Email: 2377389590@qq.com% 尊重勞動(dòng)成果,轉(zhuǎn)載請(qǐng)備注推文鏈接和公眾號(hào)名,嚴(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 長(zhǎng)度小于兩個(gè)數(shù)據(jù)集中最長(zhǎng)的長(zhǎng)度 % 則在 xAll 中插入額外的點(diǎn)以匹配最長(zhǎng)的數(shù)據(jù)集長(zhǎng)度 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'); % 使用這些索引過(guò)濾 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];
pk4lr0t4k2c64015139628.png (34.68 KB, 下載次數(shù): 1)
下載附件
保存到相冊(cè)
pk4lr0t4k2c64015139628.png
2024-9-9 17:21 上傳
案例 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];
03gcwljzrrh64015139728.png (21.4 KB, 下載次數(shù): 1)
下載附件
保存到相冊(cè)
03gcwljzrrh64015139728.png
2024-9-9 17:21 上傳
案例 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
kslqmxtas3x64015139828.png (41.88 KB, 下載次數(shù): 0)
下載附件
保存到相冊(cè)
kslqmxtas3x64015139828.png
2024-9-9 17:21 上傳
oz2ab0lcbbx64015139928.png (41.02 KB, 下載次數(shù): 0)
下載附件
保存到相冊(cè)
oz2ab0lcbbx64015139928.png
2024-9-9 17:21 上傳
- -THE END- -
源碼下載:gitee下載:https://gitee.com/iDMatlab/fillArea
12i2qzgqglj64015140028.png (69.15 KB, 下載次數(shù): 1)
下載附件
保存到相冊(cè)
12i2qzgqglj64015140028.png
2024-9-9 17:21 上傳
QQ 群下載:
xj51stf42s464015140128.png (514.09 KB, 下載次數(shù): 0)
下載附件
保存到相冊(cè)
xj51stf42s464015140128.png
2024-9-9 17:21 上傳
fileexchange 下載:
uedwbhhqvqv64015140229.png (44 KB, 下載次數(shù): 0)
下載附件
保存到相冊(cè)
uedwbhhqvqv64015140229.png
2024-9-9 17:21 上傳
參考資料:
【1】數(shù)據(jù)來(lái)源 origin 的 Learning Center【2】https://www.zhihu.com/question/37634273/answer/2317006768
ffj1k2kyluf64015140329.gif (10.71 KB, 下載次數(shù): 1)
下載附件
保存到相冊(cè)
ffj1k2kyluf64015140329.gif
2024-9-9 17:21 上傳
bpaqhc3ftzk64015140429.png (696 Bytes, 下載次數(shù): 0)
下載附件
保存到相冊(cè)
bpaqhc3ftzk64015140429.png
2024-9-9 17:21 上傳
送書(shū)活動(dòng)
tlalqsyqqx364015140529.png (696 Bytes, 下載次數(shù): 1)
下載附件
保存到相冊(cè)
tlalqsyqqx364015140529.png
2024-9-9 17:21 上傳
twyqpaepile64015140629.gif (10.71 KB, 下載次數(shù): 1)
下載附件
保存到相冊(cè)
twyqpaepile64015140629.gif
2024-9-9 17:21 上傳
包郵贈(zèng)送 「北京大學(xué)出版社」贊助《AI時(shí)代程序員開(kāi)發(fā)之道》本書(shū)AI時(shí)代程序員開(kāi)發(fā)之道:知識(shí)精進(jìn)+重點(diǎn)解析+上機(jī)實(shí)訓(xùn)+綜合實(shí)戰(zhàn)+ChatGPT應(yīng)用,零基礎(chǔ)入門(mén),讓程序員插上翅膀高效開(kāi)發(fā)!
0xvuczns1jz64015140729.png (702.16 KB, 下載次數(shù): 0)
下載附件
保存到相冊(cè)
0xvuczns1jz64015140729.png
2024-9-9 17:21 上傳
了解更多
▼▼▼
1qpxaxzfqxi64015140830.jpg (3.14 MB, 下載次數(shù): 1)
下載附件
保存到相冊(cè)
1qpxaxzfqxi64015140830.jpg
2024-9-9 17:21 上傳
【抽獎(jiǎng)方式及滿足條件】:
1.關(guān)注「好玩的MATLAB 」公眾號(hào)和視頻號(hào)
wud4izsnrwi64015140930.jpg (183.22 KB, 下載次數(shù): 1)
下載附件
保存到相冊(cè)
wud4izsnrwi64015140930.jpg
2024-9-9 17:21 上傳
2.給本文點(diǎn)【贊】+【在看】;
3.留言區(qū)評(píng)論點(diǎn)贊最多的前3名。
4.本活動(dòng)只針對(duì)從未獲過(guò)獎(jiǎng)的同學(xué),之前獲過(guò)獎(jiǎng)的小伙伴,不用參加。
同時(shí)滿足上述4個(gè)條件的讀者朋友,包郵贈(zèng)送一本。
【開(kāi)獎(jiǎng)時(shí)間】:2023年11月27日中午12點(diǎn)
【領(lǐng)獎(jiǎng)方式】:在開(kāi)獎(jiǎng)時(shí)加小編私人微信:idmatlab
掃一掃加管理員微信
qlk1jrypuvz64015141030.png (3.14 KB, 下載次數(shù): 1)
下載附件
保存到相冊(cè)
qlk1jrypuvz64015141030.png
2024-9-9 17:21 上傳
plq0sxjutpk64015141130.jpg (71.27 KB, 下載次數(shù): 1)
下載附件
保存到相冊(cè)
plq0sxjutpk64015141130.jpg
2024-9-9 17:21 上傳
|