skyboyliu 发表于 2006-9-3 22:47

回复 #16 bill0301 的帖子

大牛厉害!!
不过还有个问题,在这个程序中能显示鼠标所在位置的坐标,但是不能用鼠标取点,即鼠标单击后不能固定显示该点的坐标。这个问题该怎么解决呢?谢谢!!

lyknq 发表于 2008-12-14 10:43

如果是只有一条曲线,但是想用两个或者两个以上的纵坐标,那该怎么办了呢。
temp=[25.21,25.46,25.51,25.65,25.92,26.07,25.84,25.46,24.84,23.84...
         22.95,21.24,18.91,16.7,14.62,13.58,12.24,10.03,6.235,6.117...
       4.227,3.146,1.888,0.7581,-1.144,-3.72,-5.672,-7.739,-9.518,-11.34...
      -13.46,-15.28,-17.02,-17.75,-18.29,-18.44,-17.96];
比如上面的数据,第一个纵坐标是纬度,北半球0-90度。第二个纵坐标是纬度的正弦值,范围是0-1。
请教各位高手了。

[ 本帖最后由 ChaChing 于 2009-11-29 00:48 编辑 ]

sigma665 发表于 2008-12-14 10:54

回复 25楼 lyknq 的帖子

一条曲线,用多纵坐标有什么意义

ChaChing 发表于 2010-8-10 14:51

回复 17楼 lyknq 的帖子

Ref: 7F
http://forum.vibunion.com/forum/viewthread.php?tid=88619&page=1&extra=

curb 发表于 2010-8-11 17:10

可以试一下一个叫floataxis 的小函数 其中有floataxisx,也有floataxisy
能够设置多个x坐标,或多个y坐标

ChaChing 发表于 2010-8-12 00:42

原帖由 curb 于 2010-8-11 17:10 发表 http://www.chinavib.com/forum/images/common/back.gif
可以试一下一个叫floataxis 的小函数 其中有floataxisx,也有floataxisy
能够设置多个x坐标,或多个y坐标
建议LS说清楚些:@P

curb 发表于 2010-8-12 11:10

昨天没时间,今天仔细说
利用floataxis这个函数,可以不限量的绘制多个x轴或y轴,x轴在下面,y轴在左侧
LS的LS的LS要求的大约是这个效果
clear;clc;clf
temp = [25.21,25.46,25.51,25.65,25.92,26.07,25.84,25.46,24.84,23.84...
         22.95,21.24,18.91,16.7,14.62,13.58,12.24,10.03,6.235,6.117...
       4.227,3.146,1.888,0.7581,-1.144,-3.72,-5.672,-7.739,-9.518,-11.34...
      -13.46,-15.28,-17.02,-17.75,-18.29,-18.44,-17.96];
lat = linspace(0,90,37);
lat_s = sin(lat*pi/180);

hl1 = plot(temp,lat,'k');
xlabel('temp')
ylabel('latitude / theta')
= floatAxisY(temp,lat_s,'r-','sin theta');

把上传的m函数文件放到当前文件夹下即可
这个函数包的下载地址是
http://www2.mar.dfo-mpo.gc.ca/science/ocean/epsonde/programming.html
函数的作用是在当前图像axis上,再绘制图像,并且添加浮动坐标轴
调用方式如下(以浮动y轴为例):

= floatAxisY(varargin)

hl1: line 的句柄
ax2: line所在axis的句柄,即图像所在坐标轴的句柄
ax3: 浮动x轴的句柄
这个函数事实上是绘制了两幅图,
把线画在上面的大图中,在图左侧又绘制一个y轴,作为该line的y轴

varagin:variable argument input 输入变量
nargin=2
输入 x,y值
如:=floatAxisY(x, y)

nargin=3
输入变量 x,y,并且定义曲线,默认为‘k-’,黑实线
例如: =floatAxisY(x, y,'r-')

nargin=4
定义浮动轴的label,‘string’
=floatAxisY(x, y,'r-','Ylabel')

nargin=5
定义x,y范围,
=floatAxisY(x,y, 'r-', 'Ylabel', )

这次应该说明白了吧:@)

[ 本帖最后由 curb 于 2010-8-12 11:55 编辑 ]

curb 发表于 2010-8-12 11:57

恩,忽然意识到,17楼要求的并非两条曲线,而是保持一条曲线,将浮动的y轴坐标不均匀,保持与lat的一致?
要再考虑一下了....

curb 发表于 2010-8-12 12:03

楼主要求的
clear;clc;clf
x = ;
y = ;
a = ;
k = ;

h1 = plot(x,y,'k');
xlabel('x')
ylabel('y')
= floatAxisY(x,a,'r','a');
= floatAxisY(x,k,'b','k');
legend(,'y','a','k')


17楼的我再改改

[ 本帖最后由 curb 于 2010-8-12 12:30 编辑 ]

curb 发表于 2010-8-12 12:45

17楼的图是不是这样?
clear;clc;clf
temp = [25.21,25.46,25.51,25.65,25.92,26.07,25.84,25.46,24.84,23.84...
         22.95,21.24,18.91,16.7,14.62,13.58,12.24,10.03,6.235,6.117...
       4.227,3.146,1.888,0.7581,-1.144,-3.72,-5.672,-7.739,-9.518,-11.34...
      -13.46,-15.28,-17.02,-17.75,-18.29,-18.44,-17.96];
lat = linspace(0,90,37);
lat_s = sin(lat*pi/180);

hl1 = plot(temp,lat,'k');
xlabel('temp')
ylabel('latitude / theta')
= floatAxisY(temp,lat,'k-','sin theta');
set(ax3,'Ytick',0:10:90,...
      'YTickLabel',sprintf('%5.3f|\n',sin((0:10:90)*pi/180)))

longevity118 发表于 2011-3-6 21:43

# = plotyyy(x,y,x,a,x,k,ylabels);
# legend(hlines, 'y = x','a =x','k = x',2)

这俩句话是不是又错误呢?
页: 1 [2]
查看完整版本: 请教高手如何绘制多y 轴的曲线图啊