Maple 中以点为单位的正弦图

Sine graph in dots in Maple

我想在 Maple 中以点为单位创建正弦图的顶视图,这样最大高度显示为距离最近的点,然后最小值显示为距离最远的点。它可以是线而不是点。

在 Maple 中可以吗?如果有人只知道如何在 MATLAB 中使用,我也可以使用 MATLAB。

我试过这个:

plot3d(sin(x),linestyle=dot);

这就是我得到的(我移动了它,使其成为顶视图):

但我想要这样的东西:

或这个(正弦图下方与 max/min 对齐的点):

如果以下内容接近您想要的内容,那么您可以 fiddle 分配。 (例如,在低端获得更多传播)

我不确定您是否尝试了 top-view 3D 图,因为这正是您想要的,或者因为这是获得类似 2D 图的一种方法。所以我两个都做。

根据你的图片,在我看来你不只是想要 y-values equi-spaced 的序列。如果情况并非如此,请告诉我们。

restart:

Mx:=Statistics:-RandomVariable(PDF=(x->(sin(x)^1+1.25)/2.25)):
My:=Statistics:-RandomVariable(Uniform(0,1)):

G2D:=proc(r::range(realcons), N::posint)
       local v,w;
       v:=Vector[column](Statistics:-Sample(Mx,N,
                            method=[envelope,updates=300,range=r]));
       w:=Vector[column](Statistics:-Sample(My,N));
       <v|w>;
     end proc:

G3D:=proc(r::range(realcons), N::posint)
       local v,w;
       v:=Vector[column](Statistics:-Sample(Mx,N,
                            method=[envelope,updates=300,range=r]));
       w:=Vector[column](Statistics:-Sample(My,N));
       <v|w|map(sin,v)>;
end proc:

a,b := -5*Pi, 5*Pi:

plots:-display(
  seq(plot(G2D(a..b, 150),style=point,
           symbolsize=7,symbol=solidcircle),
      i=0..1, 0.05),
  view=[a..b, default],
  tickmarks=[piticks,decimalticks]
);

# top view of 3D plot
plots:-pointplot3d(G3D(a..b, 3000),
                   color=black, symbolsize=7,
                   orientation=[-90,0,0],
                   view=[a..b, default, default],
                   tickmarks=[piticks,default,default]);

您还可以调整或删除刻度线、y-range、颜色等

[更新] 我不确定后续请求是针对堆叠的 2D 还是 3D 图。这是二维的东西。

restart:

Mx:=Statistics:-RandomVariable(PDF=(x->(sin(x)^1+1.25)/2.25)):
My:=Statistics:-RandomVariable(Uniform(0,4)):

G2D:=proc(r::range(realcons), N::posint)
       local v,w;
       v:=Vector[column](Statistics:-Sample(Mx,N,
                            method=[envelope,updates=300,range=r]));
       w:=Vector[column](Statistics:-Sample(My,N));
       <v|map(`+`,w,1)>;
     end proc:

a,b := -5*Pi, 5*Pi:

plots:-display(
 seq(plot(G2D(a..b, 150),style=point,
           symbolsize=7,symbol=solidcircle),
      i=0..1, 0.05),
  plot(sin(x),x=a..b),
  view=[a..b, default],
  tickmarks=[piticks,[-1,1]]
);

以防万一您还需要 MATLAB 解决方案:

x = 0:2*pi/250:8*pi; % change '250' to change density
y = sin(x);

Y = arrayfun(@(ii) rand(1,round((y(ii)+1.2)*10)), (1:length(y)), 'UniformOutput', false);  % floor and ceil also possible (changes density)
X = arrayfun(@(ii) x(ii)*ones(1,length(Y{ii})), (1:length(x)), 'UniformOutput', false);

figure;
hold on;
p=cellfun(@scatter,X,Y);
xlim([0 8*pi])
set(gca, 'Visible','off') % delete axis

for ii=1:length(p)
    set(p(ii),'Marker', '.', 'MarkerFaceColor', 'k', 'MarkerEdgeColor', 'k');  % make black dots
end

结果:


更新:

已经为点的构造创建了正弦波,因此只需进行少量调整即可将正弦波添加到图中:

x = 0:2*pi/250:8*pi; % change '250' to change density
y = sin(x);

Y = arrayfun(@(ii) 2*rand(1,round((y(ii)+1.2)*10))+1.1, (1:length(y)), 'UniformOutput', false);  % floor and ceil also possible (changes density)
X = arrayfun(@(ii) x(ii)*ones(1,length(Y{ii})), (1:length(x)), 'UniformOutput', false);

figure;
hold on;
p=cellfun(@scatter,X,Y);
hold on
plot(x,y)
xlim([0 8*pi])
set(gca, 'Visible','off') % delete axis

for ii=1:length(p)
    set(p(ii),'Marker', '.', 'MarkerFaceColor', 'k', 'MarkerEdgeColor', 'k');  % make black dots
end

这给出了