用Excel处理数据图像,出现交叉怎么办?

一、问题描述

用excel制作X-Y散点图,意外的出现了4个交叉点,而实际上的图表数据是没有交叉的。

二、模拟图表

模拟部分数据,并创建X-Y散点图,数据区域,X轴数据是依次增加的,因此散点图应该是没有交叉的。

如下图,图表显示确实有一处有交叉,这是为什么呢?

在创建这个图表的时候,选择的图表类型是带平滑线和数据标记的散点图。

问题就出现在“平滑线”三个字上,平滑线,通常是在数据量比较少的情况下,通过如插值法等数学算法,在数据点之间加入多个拟合的数据点,使图表的连线在视觉上更光滑、不生硬。但是这些插入的拟合值,在一些情况下,会造成X轴的数据不是连续增加的,表现在曲线上就是出现交叉点。

如这个模拟图,将图表类型改为带直线和数据标记的散点图:

就不会有交叉点了。

三、只有一个交叉点吗?

事实上,将模拟图表放大,再放大,它的曲线显示是平滑的,图中不是只有一个交叉点,而是两个:

这些按一定算法添加的拟合数据点,不一定与实际数据相符,造成图表显示上出现交叉,与现实情况“不符”,确实会给看图者一定的错觉。貌似excel也没有提供更多的平滑算法可选项,如果介意出现图像中出现交叉,就别用平滑线,仅使用带直线连接方式,图像是生硬一点,还能展示自己的主题。或者试试其它做图软件,试试更多的平滑算法。

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,这是一个关于遗传算法解决旅行商问题的 Matlab 代码示例,可以读取 Excel 文件作为输入数据: ```matlab % 遗传算法解决旅行商问题 % 读取Excel文件数据 data = xlsread('filename.xlsx'); n = size(data,1); D = zeros(n,n); % 距离矩阵 for i = 1:n for j = 1:n D(i,j) = sqrt((data(i,1)-data(j,1))^2 + (data(i,2)-data(j,2))^2); end end % 遗传算法参数设置 popsize = 100; % 种群大小 maxGen = 500; % 最大迭代次数 pc = 0.9; % 交叉概率 pm = 0.01; % 变异概率 % 初始化种群 pop = zeros(popsize,n); for i = 1:popsize pop(i,:) = randperm(n); end % 计算适应度函数 fitness = zeros(popsize,1); for i = 1:popsize fitness(i) = tspfun(pop(i,:),D); end % 迭代更新种群 bestfit = inf; besttour = []; for i = 1:maxGen % 选择操作 [pop,fitness] = selection(pop,fitness); % 交叉操作 pop = crossover(pop,pc); % 变异操作 pop = mutation(pop,pm); % 计算适应度函数 fitness = zeros(popsize,1); for j = 1:popsize fitness(j) = tspfun(pop(j,:),D); end % 记录每次迭代的最优解 [fmin,index] = min(fitness); if fmin < bestfit bestfit = fmin; besttour = pop(index,:); end % 输出每次迭代的结果 fprintf('Generation %d: %f\n',i,bestfit); end % 输出最优解 fprintf('Best tour: '); disp(besttour); fprintf('Best fitness: %f\n',bestfit); % 出最优路径图像 figure; plot(data(:,1),data(:,2),'o'); hold on; for i = 1:n-1 x = [data(besttour(i),1),data(besttour(i+1),1)]; y = [data(besttour(i),2),data(besttour(i+1),2)]; plot(x,y,'r-'); end x = [data(besttour(n),1),data(besttour(1),1)]; y = [data(besttour(n),2),data(besttour(1),2)]; plot(x,y,'r-'); hold off; ``` 其 `filename.xlsx` 是你的 Excel 文件名,`tspfun` 函数计算旅行商问题的适应度函数。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值