[已答复] 如何将多组二维曲线呈现在一个三维坐标中?

[复制链接]
ffr 发表于 2013-1-21 15:29:04
本帖最后由 ffr 于 2013-1-21 15:31 编辑

我有一批数据,x,y,z 分别为频率,温度,所以应数值,比如

                  39℃           43℃          46℃           48℃

42MHZ      141.73        155.17        166.89        177.75
64MHZ         190.36        212.18        230.74        248.6
128MHZ         101.24        106.97        112.09        116.88

想将这组数据表现在三维坐标中,如下面的图,求指点:)
20110510_460db8cd64e4e34d56e0VCjwFCWQaCEE.jpg

27 条回复


matlabkuki 发表于 2013-1-21 16:34:29
在同一figure中使用hold on命令和plot3命令。

kyu16866 发表于 2013-1-21 19:05:02
我也想知道,有谁具体写写

meatball1982 发表于 2013-1-21 19:14:07
如2L所说

clear all
clc

te = [39  43  46  48];
fe = [42 64 128];

da=[141.73        155.17        166.89        177.75
    190.36        212.18        230.74        248.6
    101.24        106.97        112.09        116.88];

for i=1:length(fe)
    y=fe(i)*ones(size(te));
    plot3(te,y,da(i,:),'r.-');
    hold on
end

grid on

test_plot3_space.jpg

test_plot3_space.m

336 Bytes, 下载次数: 8304


ffr 发表于 2013-1-21 20:19:00
感谢4楼!!

limj1987 发表于 2013-1-22 08:45:39
直接用mesh函数就可以

remie 发表于 2013-1-22 10:29:45
本帖最后由 remie 于 2013-1-22 10:31 编辑
  1. <img alt="" src="https://www.ilovematlab.cn/forum.php?mod=image&aid=100002&size=300x300&key=e8bf7bf65404e30e&nocache=yes&type=fixnone" border="0" aid="attachimg_100002"><img alt="" src="https://www.ilovematlab.cn/forum.php?mod=image&aid=100001&size=300x300&key=40930e081423a44c&nocache=yes&type=fixnone" border="0" aid="attachimg_100001"><img alt="" src="https://www.ilovematlab.cn/forum.php?mod=image&aid=100000&size=300x300&key=339ce211cfabdcae&nocache=yes&type=fixnone" border="0" aid="attachimg_100000">
  2. te = [39  43  46  48];
  3. fe = [42 64 128];
  4. da=[141.73        155.17        166.89        177.75
  5.      190.36        212.18        230.74        248.6
  6.      101.24        106.97        112.09        116.88];

  7. [Te,Fe]=meshgrid(te,fe);
  8. figure(1);
  9. plot3(Te',Fe',da')
  10. grid on;
  11. %%
  12. figure(2)
  13. mesh(te,fe,da)
  14. figure(3)
  15. mesh(Te',Fe',da')
  16. %值得小小关注的是mesh(te,fe,da)和mesh(Te',Fe',da')用的数据不一样,画出的图示一样的。
  17. %前者是 向量-向量-矩阵,后者是矩阵-矩阵-矩阵
复制代码

figure3

figure3

figure2

figure2

figure1

figure1

remie 发表于 2013-1-22 10:31:52
上一贴第一句不是的,怎么编辑都编辑不好。。

flyingeagle 发表于 2013-1-23 09:13:37
受教了!我也自己画了一下,真可以的....:)

kyu16866 发表于 2013-1-23 15:21:45
加上这两个效果是不是更好
set(gca,'ytick',fe)
set(gca,'xtick',te)
捕获.PNG

chupei1020 发表于 2013-1-23 22:04:41
本帖最后由 chupei1020 于 2013-1-23 22:06 编辑

te = [39  43  46  48];
fe = [42 64 128];

da=[141.73        155.17        166.89        177.75
    190.36        212.18        230.74        248.6
    101.24        106.97        112.09        116.88];
mesh(te,fe,da)
123456789.jpg

remie 发表于 2013-1-25 21:21:04
kyu16866 发表于 2013-1-23 15:21
加上这两个效果是不是更好
set(gca,'ytick',fe)
set(gca,'xtick',te)

是的 是的

Yiea9303 发表于 2013-1-28 11:27:44
好!!!!!!!!!!

土星5 发表于 2014-3-2 20:12:29
如果是三个不同点函数而不是离散的点那代码该怎么写?

q317974821 发表于 2015-10-21 11:45:49
nice,对画三维图很有用。

battery 发表于 2016-4-27 11:19:59
哈哈 学习了

天路 发表于 2017-8-11 17:08:16
kyu16866 发表于 2013-1-23 15:21
加上这两个效果是不是更好
set(gca,'ytick',fe)
set(gca,'xtick',te)

这两句的具体用法是什么呢?

冥王星夜 发表于 2018-12-9 11:23:34
meatball1982 发表于 2013-1-21 19:14
如2L所说

clear all

你好,这种图叫做瀑布图,但是前提条件是所有曲线都是共用一个x轴。
我现在想画这种图,但是如果每个曲线的长度不同(即x轴不同时),如何也画成这种图呢?
因为如果两条曲线,一条有1000个数据点,一条只有100个数据点,共用一个x轴会导致,一条曲线很长,而另一条曲线只有前一条的十分之一,很不雅观,我想让他们有相同长度,即做一个多x多y的图

meatball1982 发表于 2018-12-12 09:01:21
冥王星夜 发表于 2018-12-9 11:23
你好,这种图叫做瀑布图,但是前提条件是所有曲线都是共用一个x轴。
我现在想画这种图,但是如果每个曲线 ...

plot3就是画对应的x,y,z点。你的问题我没太看明白。

x1 = 1:100;
y1 = sin(x1);
x2 = 1:1000;
y2 = cos(x2)

画在一个图里?

冥王星夜 发表于 2018-12-13 13:33:26
meatball1982 发表于 2018-12-12 09:01
plot3就是画对应的x,y,z点。你的问题我没太看明白。

x1 = 1:100;

不是的,我的问题如下:

x1 = 0:0.01:1;     % 101个数据点
y1 = sin(x1);
x2 = 0: 0.1:1;      % 11个数据点
y2 = cos(x2);

画在一个图里,如果是平面图,我可以用plotyy,但是两条曲线就在同一个平面上了

我想画三维图,其中“y1-x1”曲线在z轴的z =1处,“y2-x2”曲线在z轴的z=2处,两个曲线不在同一个平面上,同理我要用这个方法,把更多的“yn-xn”曲线画在z = n处,这样子看起来更加直观。

但是每条曲线在x轴的长度上是不一样的,有的是101个点,有的是11个点,还有的是其他数目,如果所有曲线共用一个x轴,那么有的线长,有的线短。

所以想问,有什么方法,可以实现我上面的想法,但是可以使所有线看起来长度相等。我思考后觉得,难点就是如何让不同长度的曲线分别有自己的一个x轴,这样子才能画成瀑布图的形式。

冥王星夜 发表于 2018-12-13 13:35:46
meatball1982 发表于 2018-12-12 09:01
plot3就是画对应的x,y,z点。你的问题我没太看明白。

x1 = 1:100;

https://www.ilovematlab.cn/forum. ... =3471466#pid3471466

这个是我之前询问这个问题所发起的帖子,麻烦您看一下,提下宝贵建议,谢谢!

meatball1982 发表于 2018-12-13 21:43:29
  1. clear all
  2. clc

  3. %% outline
  4. % plot line in 3D

  5. %%
  6. x1 = 0:0.01:1;     % 101个数据点
  7. y1 = sin(x1);
  8. x2 = 0: 0.1:1;      % 11个数据点
  9. y2 = cos(x2);

  10. hold on
  11. plot3(x1,1*ones(size(x1)),y1,'b.-','linewidth',2)
  12. plot3(x2,2*ones(size(x2)),y2,'g.-','linewidth',3)

  13. axis([-0.2 1.2 0.5 2.5 -0.1 1.2])
  14. box on
  15. grid on
  16. view(-20,22)
复制代码



meatball1982 发表于 2018-12-14 14:50:23
冥王星夜 发表于 2018-12-13 13:35
https://www.ilovematlab.cn/forum.php?mod=viewthread&tid=561961&page=1&postid=3471466#pid3471466

这 ...

看22L。

冥王星夜 发表于 2018-12-15 09:46:33

非常感谢,您的方法非常正确,我这边执行过后出现了我想要的效果。

之前是我考虑得太复杂了,而且没有了解plot3函数的精髓,这次受益匪浅。

冷小萌 发表于 2020-10-21 09:41:57
meatball1982 发表于 2013-1-21 19:14
如2L所说

clear all

请问如果进一步想将这些曲线的颜色代表幅值大小的话怎么操作啊?我用patch函数只出来了一条曲线。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

相关帖子
相关文章
热门教程
站长推荐
快速回复 返回顶部 返回列表