虽然你们中的许多人会对我的目标有一个很好的了解,只是从阅读标题--允许我做一个简单的介绍。
我有一个Fortran程序-它包括一个程序,一些内部子程序,有自己的过程的7个模块,和.嗯,就这样。
没有详细说明,因为我认为在这一点上没有必要使用的绘图功能(主要是用一些定制的绘图功能)作为我程序的交互部分。目前正在使用我自己的一些自定义绘图例程(基于HPGL和Calcomp的例程),但作为我的练习的一部分,我想看看它会在哪里进行,以及它将如何工作(甚至可能是我的建议吗?)还有,我要付出多少努力?
我知道这个主题在网络上的许多“教程”中都有相当广泛的描述,但出于某种原因,我很难找到真正简单但具有说明性的介绍性内容。所以如果有人能发一两个简单的例子,我会非常感激的。或者牵着我的手,引导我完成一个工作的例子。
平台: IVF 11)在Win XP SP2上
发布于 2010-06-02 04:04:41
继续讨论DISLIN的解决方案,并给出一个不适合评论的答案.
@M.S.B.-你好。我很抱歉写在你的答复,但这些评论太短,并回答一个问题的形式是.总之..。
DISLIN的快速绘图特性--常规QPLOT只需要三个参数来绘制曲线:X数组、Y数组和数字N。参见手册第16章。另外,只需要几次额外的调用来选择输出设备并标记轴。我没有用过这个,所以我不知道自动缩放有多好。
是的,我知道Quickplot,以及它的相关例程,但是它对我的需求来说太固定了(不能改变任何东西),而且是的,它的自动标度有点古怪。而且,graf内部的利润太大了。
或者,如果您想使用GRAF的功能来设置您的图形框,则会有子例程GAXPAR自动生成推荐值。-2作为LABDIG的第一个参数,自动确定勾标标签中的数字数。
你试过这些套路了吗?
对不起,我在dislin的索引中找不到您要发送的GAXPAR例程。你确定它的名字就是这样的吗?
回复M.S.B.:是的,我确信GAXPAR的拼写。这是DISLIN 9.5 PDF手册第4章中的最后一个例程。也许这是一种新的套路?还有另一条自动缩放的途径: SETSCL --参见第6章。
到目前为止,我所做的(除了一些“鸭带”解决方案)是
use dislin; implicit none
real, dimension(5) :: &
x = [.5, 2., 3., 4., 5.], &
y = [10., 22., 34., 43., 15.]
real :: xa, xe, xor, xstp, &
ya, ye, yor, ystp
call setpag('da4p'); call metafl('xwin');
call disini(); call winkey('return');
call setscl(x,size(x),'x');
call setscl(y,size(y),'y')
call axslen(1680,2376) !(8/10)*2100 and 2970, respectively
call setgrf('name','name','line','line')
call incmrk(1); call hsymbl(3);
call graf(xa, xe, xor, xstp, ya, ye, yor, ystp); call curve(x,y,size(x))
call disfin()
end它会把极大值放在轴上。你知道我怎么才能在外边有一个“主要的滴答边”,在曲线和轴线之间放一些区域(同时仍然保持着setscl的效果)?
即使您不喜欢内置的自动缩放,如果您已经在使用DISLIN,滚动您自己的自动缩放将比从MATLAB调用Fortran更容易。您可以使用Fortran内部函数minval和maxval来查找数据中的最小值和最大值,而不是编写一个子例程向外四舍五入为“尼斯”圆形值。类似地,一个子程序来决定勾标间距.
这实际上并不容易做到(证明我错了的想法也会很受欢迎)。或者我应该说,如果你知道你的价值观的大致范围,那是很容易的。但如果你不知道你的价值是在13-34还是1330-3440,那么.
..。如果我在这里完全走错了轨道,请解释一下你是否有不同的地方。我的英语有点欠缺,所以我只能希望上面的内容是可以理解的。
在一个子例程中确定圆图的开始/结束值,您可以缩放实际的min/max值,使其始终在1到10之间,然后有一张表来选择漂亮的圆值,然后不缩放到正确的范围。
--
发布于 2010-06-01 08:34:32
最简单的方法是让您的Fortran程序写入文件,并让您的Matlab程序读取这些文件的信息,您想要绘制。我在Linux上做了大部分的数字处理,所以我不完全确定Windows是如何处理一个进程编写一个文件,另一个进程同时读取它。
不过,这有点离谱,所以您可能需要考虑使用Matlab调用Fortran程序(或其中的一部分),并直接获取数据进行绘图。在本例中,您需要在Matlab文档中研究如何创建Fortran文件。这样做相对简单,如果您乐于使用Matlab驱动流程,使用Fortran作为计算服务,则可以满足您的需求。我会查看与Matlab一起分发的示例,以获得简单的Fortran文件。
最后,您可以从Fortran程序调用Matlab,搜索调用Matlab引擎的文档。对我来说,这可能更难满足你的需求,而且我对此并不十分熟悉。
如果你再次发帖更详细,我可能能够提供更具体的提示,但你可能应该开始卷起你的袖子和潜水到MEX文件。
发布于 2010-06-01 22:08:28
转储Matlab,因为它的专有,昂贵,臃肿/缓慢和代码是不容易并行化。
您应该做的是在DISLIN、PLplot、GINO、gnuplotfortran等行上使用一些东西。
https://stackoverflow.com/questions/2946525
复制相似问题