matlab 结合K近邻算法 画双Y轴图

1.获取图片多个点处的颜色

clc
hua=imread('1.png');
figure(1)
imshow(hua);
[c1,c2]=getpts; %选择颜色点
c1=ceil(c1); %将选点的位置化为整数
c2=ceil(c2);
for i=1:length(c1)
    color(i,:)=hua(c2(i),c1(i),:);
end
color=double(color);
color=color/255;

2.绘制双Y轴图

clear all;
clc;
color=[0.784313725490196,0.843137254901961,0.780392156862745;
    0.996078431372549,0.882352941176471,0.776470588235294;
    0.129411764705882,0.447058823529412,0.619607843137255;
    0.427450980392157,0.447058823529412,0.615686274509804;
    0.796078431372549,0.141176470588235,0.333333333333333];

k=3;
trainData = [0.1,2.1;
    0.2,0.5;
    0.3,1.1;
    0.5,0.5;
    0.8,0.9;
    1.2,0.7;
    1.25,1.3;];
trainClass = [1,2,1,2,1,1,2];
testData = [1.7,2.3];
[m,n]=size(trainData);
dis = zeros(1,m);
for i = 1:m
    dis(1,i)=((testData(1,1)-trainData(i,1))^2+(testData(1,2)-trainData(i,2))^2)^0.5;
end
% sort
jointDis = [dis;trainClass];
sortDis= sortrows(jointDis');
sortDisClass = sortDis';
k_type=sortDisClass(2,end-k+1:end);
label = mode(k_type, 'all');


%横坐标
x11=trainData(:,1);y11=trainData(:,2); %训练数据
x12=[x11(end),testData(:,1)];y12=[y11(end),testData(:,2)]; %预测数据
x13=[x11;testData(:,1)];y13=[trainClass,label];

x21=trainData(:,1);y21=trainData(:,2); %训练数据
x22=[x11(end),testData(:,1)];y22=[y11(end),testData(:,2)]; %预测数据
x23=[x11;testData(:,1)];y23=[trainClass,label];

subplot(2,1,1)
set(gca,'FontName','Times New Roman','FontSize',12);
X_lim=[0 1.8];  Y_lim=[0.2 2.5]; Y_lim1=[0.2 3];
xlim(X_lim);ylim(Y_lim)

det=0.01;
rectangle('Position',[X_lim(1)+det,Y_lim(1)+det,X_lim(2)/2-2*det,Y_lim(2)-Y_lim(1)-det],'facecolor',color(1,:),'EdgeColor',color(1,:))
hold on
rectangle('Position',[X_lim(2)/2,Y_lim(1)+det,X_lim(2)/2-2*det,Y_lim(2)-Y_lim(1)-det],'facecolor',color(2,:),'EdgeColor',color(2,:))
hold on
colororder([color(3,:);color(5,:)])
yyaxis left
plot(x21,y21,'-','Color',color(3,:),'linewidth',2);
plot(x22,y22,'-','Color',color(4,:),'linewidth',2);
hold on
xlabel('X');

yyaxis right
plot(x23,y23,'-o','Color',color(5,:),'linewidth',2);
ylim(Y_lim1)
hold on
set(gca,'tickdir','out')
hold on
set(gca,"FontName","Times New Roman","FontSize",12,"LineWidth",1.5)
box off
% set(fig,'defaultAxesColorOrder',[left_color; right_color]);


subplot(2,1,2)
set(gca,'FontName','Times New Roman','FontSize',12);
%
set( gca,'xticklabel', [] );
X_lim=[0 1.8];  Y_lim=[0.2 2.5]; Y_lim1=[0.2 3];
xlim(X_lim);ylim(Y_lim)

det=0.01;
rectangle('Position',[0+det,Y_lim(1)+det,X_lim(2)/2-2*det,Y_lim(2)-Y_lim(1)-det],'facecolor',color(1,:),'EdgeColor',color(1,:))
hold on
rectangle('Position',[X_lim(2)/2,Y_lim(1)+det,X_lim(2)/2-2*det,Y_lim(2)-Y_lim(1)-det],'facecolor',color(2,:),'EdgeColor',color(2,:))
hold on

colororder([color(3,:);color(5,:)])
yyaxis left
plot(x11,y11,'-','Color',color(3,:),'linewidth',2);
hold on
plot(x12,y12,'-','Color',color(4,:),'linewidth',2);
ylabel('Y')
hold on
yyaxis right
plot(x13,y13,'-o','Color',color(5,:),'linewidth',2);
ylim(Y_lim1)
hold on

set(gca,'tickdir','out')
% ylabel('PH','Color',color(5,:))
ylabel('Type')
ha=get(gcf,'children');
set(gca,"FontName","Times New Roman","FontSize",12,"LineWidth",1.5)
box off
h=legend('TrainData(Y)','TestData(Y)','TypeData');
set(h,'FontName','Times New Roman','FontSize',11,'FontWeight','normal','box','off')

set(gcf,'position',[50,50,700,500])%图幅的大小,250,250是图片的位置,1200是宽度,300是高度,本例宽度是高度的4倍,四张子图
set(ha(1),'position',[0.2 0.5 0.7 0.4])%注意ha(1)是第四幅子图,ha(2)是第三幅子图,以此类推,与我们正常逻辑顺序相反,不知道为什么会出现这种情况
set(ha(2),'position',[0.2 0.1 0.7 0.4])%这里的position和上面的position不一样,这里的是百分比的关系,第一个数字70%是从右往左70%,0.2是从下到上20%,

3.结果展示

双Y轴图

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值