计算化学公社

 找回密码 Forget password
 注册 Register
Views: 9926|回复 Reply: 6
打印 Print 上一主题 Last thread 下一主题 Next thread

[建模与可视化] 下面这种二维分布图的做法

[复制链接 Copy URL]

47

帖子

1

威望

548

eV
积分
615

Level 4 (黑子)

大家好,最近在处理数据的时候在想做下图左边这种图,横坐标和纵坐标每个小线段代表了一个整数数值,颜色根据数值大小涂色。右图是根据gnuplot的pm3d功能做的图。但两图的区别是,我用gnuplot做的图其实横坐标是各个点,不是一个线段。所以想问下大家有没有谁知道origin和gnuplot是否可以实现左图的效果,如果不行的话,什么软件可行?

137

帖子

0

威望

1108

eV
积分
1245

Level 4 (黑子)

2#
发表于 Post on 2017-11-18 09:18:03 | 只看该作者 Only view this author
本帖最后由 meatball1982 于 2017-11-18 09:56 编辑

在matlab当中,默认的和你的效果是一样的。
我的思路是将x,y作一个小平移,每个都 -0.5.在新的x,y,z边上加一行和列,形成一个新的x,y,z.
以相同的方式画图。
如果可行,gnuplot 应该也可以实现。

主函数
  1. clear all
  2. clc

  3. [x,y,z]=peaks(10);
  4. z(1:2,:)=[];
  5. [x,y,z_new]=fun_mm_shift(z);
  6. subplot(1,2,1)
  7. surf(z)
  8. axis equal
  9. axis tight
  10. view(0,90)
  11. colorbar
  12. title('your fig')

  13. subplot(1,2,2)
  14. surf(x,y,z_new)
  15. colormap(hot)
  16. axis equal
  17. axis tight
  18. view(0,90)
  19. colorbar
  20. title('ref fig')
复制代码



平移的函数。要存成fun_mm_shift.m放在主函数的目录下,或是放在你matlab知道的路径里。
  1. function [ X,Y,z_new ] = fun_mm_shift( z )
  2. % [ X,Y,z_new ] = fun_mm_shift( z )
  3. % shfit the x,y to x-0.5, y-0.5
  4. % add one row and one column
  5. % for surf,

  6. [m,n]=size(z);
  7. [X,Y]=meshgrid([1:(n+1)]-0.5,[1:(m+1)]-0.5);
  8. tm=z;
  9. tm=[z;z(end,:)];
  10. z_new=[tm';tm(:,end)']';

  11. end
复制代码

fig_grid.png (35.95 KB, 下载次数 Times of downloads: 44)

fig_grid.png

评分 Rate

参与人数
Participants 2
eV +10 收起 理由
Reason
ggdh + 5 不明觉厉
I10140317 + 5

查看全部评分 View all ratings

47

帖子

1

威望

548

eV
积分
615

Level 4 (黑子)

3#
 楼主 Author| 发表于 Post on 2017-11-18 10:17:29 | 只看该作者 Only view this author
meatball1982 发表于 2017-11-18 09:18
在matlab当中,默认的和你的效果是一样的。
我的思路是将x,y作一个小平移,每个都 -0.5.在新的x,y,z边上加 ...

嗯嗯,非常感谢!
我先按你的思路用gnuplot试试,不行的话转战matlab,得学习一下。

1295

帖子

0

威望

6289

eV
积分
7584

Level 6 (一方通行)

4#
发表于 Post on 2017-11-18 16:11:48 | 只看该作者 Only view this author
https://www.x-mol.com/groups/fan_jianzhong

strive for greatness

47

帖子

1

威望

548

eV
积分
615

Level 4 (黑子)

5#
 楼主 Author| 发表于 Post on 2017-11-21 09:25:55 | 只看该作者 Only view this author
小范范1989 发表于 2017-11-18 16:11
http://bbs.keinsci.com/forum.php?mod=viewthread&tid=2968&extra=
类似这个不?
origin作图

嗯嗯,没错,是这样的,谢谢!!

47

帖子

1

威望

548

eV
积分
615

Level 4 (黑子)

6#
 楼主 Author| 发表于 Post on 2017-11-21 10:58:29 | 只看该作者 Only view this author
本帖最后由 I10140317 于 2017-11-21 11:22 编辑

经过各位的帮助,结合网上的一些教程,最终成功的用gnuplot成功作图,附代码如下:
  1. unset title
  2. unset key
  3. set size ratio 0.75
  4. set palette defined (0 'white', 1 'green')

  5. set xyplane at 0.0
  6. set cbrange [0:1.0]

  7. set xrange[-0.5:5.5]
  8. set yrange[-0.5:5.5]
  9. set xtics  0,1,5            font "Arial,10"
  10. set ytics  0,1,5            font "Arial,10"

  11. set mxtics 2
  12. set mytics 2

  13. set tics scale 0,1.0
  14. set grid front mxtics mytics lw 1.5 lt -1 lc rgb 'white'
  15. set term pngcairo color font "Arial,10"
  16. set output "file.png"
  17. set origin 0.0,0.0
  18. plot "file.dat" matrix with image
复制代码

文件格式如下:
0.22 0.13 0.54 0.83 0.08 0.53
0.98 0.57 0.52 0.24 0.66 0.74
0.23 0.68 0.24 0.89 0.76 0.15
0.89 0.78 0.69 0.78 0.10 0.88
0.24 0.77 0.27 0.28 0.69 0.44
0.46 0.22 0.65 0.73 0.32 0.28


效果如下:







204

帖子

0

威望

2733

eV
积分
2937

Level 5 (御坂)

7#
发表于 Post on 2017-11-22 18:54:58 | 只看该作者 Only view this author
I10140317 发表于 2017-11-21 10:58
经过各位的帮助,结合网上的一些教程,最终成功的用gnuplot成功作图,附代码如下:
文件格式如下:
0.22  ...

你这种图使用Excle就能做啊,使用数据填色,再把色阶图粘过来

本版积分规则 Credits rule

手机版 Mobile version|北京科音自然科学研究中心 Beijing Kein Research Center for Natural Sciences|京公网安备 11010502035419号|计算化学公社 — 北京科音旗下高水平计算化学交流论坛 ( 京ICP备14038949号-1 )|网站地图

GMT+8, 2026-2-22 04:23 , Processed in 0.196355 second(s), 24 queries , Gzip On.

快速回复 返回顶部 返回列表 Return to list