繁体   English   中英

在Matlab中绘制与精确数据点相对应的轮廓

[英]Plotting a contour corresponding to exact data points in matlab

在此处输入图片说明

我将这些时间,x值和温度作为数据的3列。

时间从0-40变化到400-1300,温度从0-10 ^ 5变化很大。

我已经将所有数据加载到变量中并进行了绘制。

这是我的剧本脚本。

clear all; close all; clc;
load temperature.txt;
time = temperature(:,1);
x = temperature(:,2);
temperature_system = temperature(:,3);
% Removing outliers with data value below 41.96 percentile
pos = temperature_system < prctile(temperature_system,41.96);
time(pos) = [];
x(pos) = [];
temperature_system(pos) = [];

% Removing data values above 97 percentile
pos = (temperature_system > prctile(temperature_system,97));
time(pos) = [];
x(pos) = [];
temperature_system(pos) = [];

X1 = [time x];

% This function crates an interpolation of the data points
F = scatteredInterpolant(X1,temperature_system);
x1 = linspace(400,max(x),100);
x2 = linspace(min(time),max(time),100);
[X,Y] = meshgrid(x2,x1);
Z = F(X,Y);
f1 = figure(1);
set(f1,'renderer','zbuffer');
contourf(X,Y,Z);
shading flat;
colorbar;

如您所见,问题是,我在y轴上的值从400开始变化,但是我看到所有这些值都低于400,而蓝色应该是不存在的。 我该如何删除它。

请注意,该文件约为50 MB,因此我无法在此处上传。

请提出一些建议以删除此蓝色区域。

最简单的方法可能不是修改太多数据,而是修改绘图。 我无法重新创建数据,但是为了获得一些演示数据,我使用了内置peaks并模拟了“非绘图区域”,我将数据点设置为小于0到0。看到时您可能会理解。 尽管如此,该解决方案仍需要对该图进行一些修改。

由于我不想绘制最小的点,因此将颜色图数据分配给cmap 这将允许我修改颜色图。 由于cmap(1,:)是底色,因此将其设置为白色。 然后我用colormap(cmap)设置颜色图。 我将在使用的光谱中少用一种颜色,但是我认为这是一个合理的小损失。 但是现在我的底部有些丑陋。 为了消除这个问题,我通过将下限设置为0.2( set(q,'Limits',[0.2,8]); )重新缩放set(q,'Limits',[0.2,8]); 如果您使用调试器(或使用注释或其他内容)逐步进行此操作,则会注意到0.1的下限不足以去除白色。 可以计算出白色消失得更准确的位置,但是通常不需要这种情况。

function demo()
[x,y,z]=peaks;
z(z<0) = 0;
contourf(x,y,z);
q=colorbar;
cmap = colormap;
cmap(1,:) = [1,1,1];
colormap(cmap);
set(q,'Limits',[0.1,8]); % or use ylim(q,[0.1,8])
set(q,'Limits',[0.2,8]); % or use ylim(q,[0.2,8])

在此处输入图片说明

您可能还需要进行其他修改,例如在图形轴上设置'CLim'属性(也可以使用caxis()完成)。 这会将颜色条的下限设置为您决定的任何下限(400?)。 之后,可以直接应用与上述相同的方法,除非您想要更多。

很难确切地知道您要做什么,因为这类问题通常是非常具体的,但这应该可以帮助您解决问题。

祝您好运,如有疑问,请发表评论。

编辑我注意到, 'Limits'不是较旧版本的colorbar属性。 但是,函数ylim()仍适用于2014b之前和2014b之后的版本。 这意味着这可以替代。 升级到新的Matlab版本时,使用此功能可以减轻维护的负担

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM