Why does pcolor adds a flat lines during a data gap instead of white space?

33 ビュー (過去 30 日間)
megha
megha 2024 年 10 月 25 日 18:54
コメント済み: Skye 2024 年 10 月 28 日 11:58
I use pcolor command to make a color plot. The data has a some gaps (NaN values) in it where a white space is expected.
However, I get flat horizontal lines during that period. Any help appreciated. I tried both shading flat and shading interp, it shows same. However, I do see actual white space at certain instants. I could not figure out why! I attach an example for each case below. Both occurs in the same plot.
EDITS: Data Attached
h_fig = pcolor(T_,E_log,(double(FPDO))');
% h_fig.EdgeColor = 'none';
xlim([0,T_(end,1)]); ylim([-2.5,log10(30)]);
colormap(jet); shading interp;
caxis([3,7]) % change caxis same as mar27_2017_omni_L_fesa_pile
Any help will be appreciated.
  1 件のコメント
Skye
Skye 2024 年 10 月 28 日 11:58
I faced a similar issue while working with pcolor for my assignment, where NaN values caused unexpected flat lines in the plot. One approach that helped me was ensuring the CData matrix was structured properly for MATLAB to interpret NaN as gaps. Additionally, I found that experimenting with different plotting functions, like imagesc, can sometimes handle NaN values better without those flat lines. If you’re looking for extra help, I highly recommend www.matlabassignmentexperts.com. They provided excellent guidance for my MATLAB project, and their support team is super responsive. You can reach them on WhatsApp at +1 (315) 557-6473 or email them at info@matlabassignmentexperts.com.

サインインしてコメントする。

採用された回答

Voss
Voss 2024 年 10 月 25 日 19:47
load FPDO.mat
load E_log.mat
load T_.mat
T_ = T_lepi;
The problem is that T_ and E_log are not monotonic:
figure
subplot(2,1,1)
plot(T_,'.-')
ylabel('T\_')
subplot(2,1,2)
plot(E_log,'.-')
ylabel('E\_log')
So pcolor has to jump around and connect points across what would be the NaN gaps.
Sort the vectors and reorder the rows and columns of the matrix FPDO accordingly, pcolor with those reordered values, and you get the proper gaps where the NaNs are:
[T_sorted,Tidx] = sort(T_);
[E_log_sorted,Eidx] = sort(E_log);
FPDO_plot = FPDO(Tidx,Eidx);
figure
pcolor(T_sorted,E_log_sorted,FPDO_plot.');
axis tight
colormap(jet); shading interp;
clim([3,7])
Or reorder in the T dimension only:
[T_sorted,Tidx] = sort(T_);
FPDO_plot = FPDO(Tidx,:);
figure
pcolor(T_sorted,E_log,FPDO_plot.');
axis tight
colormap(jet); shading interp;
clim([3,7])
  2 件のコメント
megha
megha 2024 年 10 月 25 日 20:11
@Voss amazing job! I would have never been able to figure this out! I appreciate your time and efforts. Thanks!
Voss
Voss 2024 年 10 月 25 日 20:16
You're welcome!

サインインしてコメントする。

その他の回答 (0 件)

カテゴリ

Help Center および File ExchangeAnnotations についてさらに検索

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by