爱气象,爱气象家园! 

气象家园

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博登陆

只需一步, 快速开始

搜索
查看: 5247|回复: 7

[作图] 这种类型图的例子

[复制链接]

新浪微博达人勋

发表于 2019-3-27 16:10:52 | 显示全部楼层 |阅读模式

登录后查看更多精彩内容~

您需要 登录 才可以下载或查看,没有帐号?立即注册 新浪微博登陆

x
这样类型图的案例有吗?

1553674092(1).png
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2019-3-27 16:18:48 | 显示全部楼层
我用matlab画过。楼主如果不嫌弃可以稍加修改

Fig_7_Q_factor_1_to_10.eps

1.54 MB, 下载次数: 5, 下载积分: 金钱 -5

Fig_0_to_qixiangjiayuan.m

3.57 KB, 下载次数: 3, 下载积分: 金钱 -5

密码修改失败请联系微信:mofangbao
回复 支持 1 反对 0

使用道具 举报

新浪微博达人勋

发表于 2019-3-27 16:22:04 | 显示全部楼层
哎呀   不知道怎么不用金钱传  我把matlab代码粘过来好了


代码
clear; close all; clc;

dir     = 'D:\ypma\files\';
file    = [dir,'combine.xlsx'];
sheet_n = 'factors';            
temp    = xlsread(file,sheet_n);
sites   = temp(:,1:2);
lonlat  = temp(:,3:4);

%% 这个up_factor可以修改
up_factor = 10;
tgt_fac   = 26;

dims      = size(temp);
fac       = zeros(dims(1),(dims(2)-10+1)/7,7);
rlt_site  = zeros(dims(1),25);
for icol  = 10:7:dims(2)-1
    fac(:,(icol-10)/7+1,:)   = temp(:,icol:icol+6);
end


only_fac     = fac(:,1:up_factor,1);   
only_fac_130 = only_fac;  only_fac_130(only_fac_130>130) = NaN; only_fac_130(only_fac_130<-1.0) = NaN;

dims_fac     = size(only_fac_130);
%% 画图设置从这开始!!!!!
figure(1)
fsize = 14;

set(gcf,'unit','centimeters','position',[10 0 20 10]);

scat_data = zeros(10,130);
for ilen = 1:dims_fac(2)
    temp = only_fac_130(:,ilen);
    for isite = 1:length(temp)
        if ~isnan(temp(isite))
            scat_data(ilen,temp(isite)) = scat_data(ilen,temp(isite))+1;
        end
    end
end
scat_color = zeros(10,130);
for ifac = 1:130
    scat_color(:,ifac) = 100.*scat_data(:,ifac)./sum(scat_data(:,ifac));
end

ssize  = 60;
colors = jet(16);
for ilen = 1:dims_fac(2)
%     scatter(zeros(10,1)+ifac,1:10,ssize,scat_color(:,ifac),'square','filled','MarkerEdgeColor','none'); hold on;
    for ifac = 1:130
        if scat_color(ilen,ifac)<=5.0; rec_color = colors(1,:); end;
        if scat_color(ilen,ifac)>5.0 && scat_color(ilen,ifac)<=10.0; rec_color = colors(4,:); end;
        if scat_color(ilen,ifac)>10.0 && scat_color(ilen,ifac)<=15.0; rec_color = colors(6,:); end;
        if scat_color(ilen,ifac)>15.0 && scat_color(ilen,ifac)<=20.0; rec_color = colors(8,:); end;
        if scat_color(ilen,ifac)>20.0 && scat_color(ilen,ifac)<=25.0; rec_color = colors(10,:); end;
        if scat_color(ilen,ifac)>25.0 && scat_color(ilen,ifac)<=30.0; rec_color = colors(11,:); end;
        if scat_color(ilen,ifac)>30.0 && scat_color(ilen,ifac)<=35.0; rec_color = colors(12,:); end;
        if scat_color(ilen,ifac)>35.0 && scat_color(ilen,ifac)<=40.0; rec_color = colors(16,:); end;
        rectangle('Position', [ifac-0.5,ilen-0.5,1.0,1.0], 'FaceColor', rec_color, 'EdgeColor', 'none');
    end
end

xlim([0.5 130.5]);ylim([0.5 10.5]);
ylabel('位置序号','FontSize',fsize); xlabel('因子序号','FontSize',fsize);
ax = gca;
ax.XAxis.TickDirection = 'out';
set(ax,'xtick',1:10:130,'Layer','top','FontSize',fsize);
set(ax,'ytick',1:1:10,'Layer','top','FontSize',fsize);

file3=['Fig_7_Q_factor_1_to_',num2str(up_factor),'_',sheet_n,'.eps'];
saveas(gca,file3,'psc2');

figure
set(gcf,'unit','centimeters','position',[10 0 20 10]);
rec_color = colors(1,:); rectangle('Position', [1-0.5,1-0.5,1.0,1.0], 'FaceColor', rec_color, 'EdgeColor', 'none'); hold on;
rec_color = colors(4,:); rectangle('Position', [2-0.5,1-0.5,1.0,1.0], 'FaceColor', rec_color, 'EdgeColor', 'none');
rec_color = colors(6,:); rectangle('Position', [3-0.5,1-0.5,1.0,1.0], 'FaceColor', rec_color, 'EdgeColor', 'none');
rec_color = colors(8,:); rectangle('Position', [4-0.5,1-0.5,1.0,1.0], 'FaceColor', rec_color, 'EdgeColor', 'none');
rec_color = colors(10,:); rectangle('Position', [5-0.5,1-0.5,1.0,1.0], 'FaceColor', rec_color, 'EdgeColor', 'none');
rec_color = colors(11,:); rectangle('Position', [6-0.5,1-0.5,1.0,1.0], 'FaceColor', rec_color, 'EdgeColor', 'none');
rec_color = colors(12,:); rectangle('Position', [7-0.5,1-0.5,1.0,1.0], 'FaceColor', rec_color, 'EdgeColor', 'none');
rec_color = colors(16,:); rectangle('Position', [8-0.5,1-0.5,1.0,1.0], 'FaceColor', rec_color, 'EdgeColor', 'none');

xlim([0 10]); ylim([0 2]);
1553674894(1).png
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

 楼主| 发表于 2019-3-27 21:09:45 | 显示全部楼层
croton 发表于 2019-3-27 16:22
哎呀   不知道怎么不用金钱传  我把matlab代码粘过来好了

谢谢,非常有用,我更希望可以有ncl的编程。谢谢
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

发表于 2019-3-27 21:47:11 | 显示全部楼层
ncl也可以,只要根据数值大小定义颜色画矩形就行。可以看一下ncl中barplot的例子,其中堆砌bar就是这种思想实现的。只不过我没有之前画的时候编的matlab程序,所以抱歉没法提供ncl的程序。
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

发表于 2019-3-27 22:15:43 | 显示全部楼层
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

发表于 2019-3-27 22:21:06 | 显示全部楼层
Lancelot 发表于 2019-3-27 22:15
http://www.ncl.ucar.edu/Applications/raster.shtml
5-7
请善用搜索功能

http://www.ncl.ucar.edu/Applications/table.shtml
还有这种的
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

 楼主| 发表于 2019-3-28 10:10:17 | 显示全部楼层
Lancelot 发表于 2019-3-27 22:21
http://www.ncl.ucar.edu/Applications/table.shtml
还有这种的

好的谢谢,非常感谢,
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册 新浪微博登陆

本版积分规则

Copyright ©2011-2014 bbs.06climate.com All Rights Reserved.  Powered by Discuz! (京ICP-10201084)

本站信息均由会员发表,不代表气象家园立场,禁止在本站发表与国家法律相抵触言论

快速回复 返回顶部 返回列表