找回密码
 注册
Simdroid-非首页
楼主: qiao_david

[编程进阶] 关于等高线的标注问题

[复制链接]
发表于 2006-10-20 15:59:23 | 显示全部楼层 来自 湖南长沙

不仿把下面的回答作为精华贴(6)

那么稍微复杂的标注呢?
例如sin(x*y),有:

a=Table[(i-10)/10,{i,0,20}]//N;
c={-.8,-.5,-0.1,0.1,.5,.8};
x1=Table[#,{i,Length[a]}]&/@c//Flatten;
y1=Nest[Join[#,a]&,a,Length[c]-1];
b=y/.MapThread[FindRoot[Sin[#2*y]==#1,{y,#1}]&,{y1,x1}];
z1=ContourPlot[Sin[x*y]//Evaluate,{x,-1.1,1.1},{y,-1.1,1.1},PlotPoints->1000, Contours->a,ContourShading->False,Epilog->MapThread[Text[ToString[#1],{#3,#2},Background->GrayLevel[1.0]]&,{y1,b,x1}]];

得到

[ 本帖最后由 scqxaie 于 2006-10-20 16:16 编辑 ]

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
发表于 2006-10-20 16:02:58 | 显示全部楼层 来自 湖南长沙

不仿把下面的回答作为精华贴(7)

Simdroid开发平台
注意这里sin对应有很简单的反函数arccos,对于反函数不简单的情况呢?
u[r_,θ_]:=3/8-1/2 r^2 Cos[2 θ]+1/8 r^4Cos[4 θ];
v[x_,y_]:=Module[{r,θ},r=Sqrt[x^2+y^2];θ=If[ArcTan[x,y]>0,ArcTan[x,y],2π+ArcTan[x,y]];u[r,θ]//Evaluate];
a=Table[(i-10)/10,{i,0,20}]//N;
c={-.8,-.5,-0.1,0.1,.5,.8};
x1=Table[#,{i,Length[a]}]&/@c//Flatten;
y1=Nest[Join[#,a]&,a,Length[c]-1];
b=y/.MapThread[FindRoot[v[#2,y]==#1,{y,-1,1}]&,{y1,x1}];
z1=ContourPlot[v[x,y]//Evaluate,{x,-1.1,1.1},{y,-1.1,1.1},PlotPoints->1000,Contours->a,ContourShading->False,Epilog->MapThread[Text[ToString[#1],{#3,#2},Background->GrayLevel[1.0]]&,{y1,b,x1}]];

得到:

[ 本帖最后由 scqxaie 于 2006-10-20 16:19 编辑 ]

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
发表于 2006-10-20 16:06:28 | 显示全部楼层 来自 湖南长沙

不仿把下面的回答作为精华贴(8)

从中可以看出:
       由于FindRoot算法不强健,所以对于这里的复杂函数计算所得的高程标志位置不十分准确。可以调整算法,进而得到:

[ 本帖最后由 scqxaie 于 2006-10-20 16:23 编辑 ]

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
发表于 2006-10-20 16:09:25 | 显示全部楼层 来自 湖南长沙

不仿把下面的回答作为精华贴(8)

前面由于在x=0 or y=0处计算有困难,因此,进一步调整算法,得到:

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
发表于 2006-10-20 16:14:08 | 显示全部楼层 来自 湖南长沙

不仿把下面的回答作为精华贴(9)-The End

最后留下两个问题:
1.如何作出:"不仿把下面的回答作为精华贴(7) 、(8)"中的图?
2.如何在各等值线长度n等分点处标注文字?

[ 本帖最后由 scqxaie 于 2006-10-20 16:31 编辑 ]
发表于 2006-10-20 16:27:33 | 显示全部楼层 来自 湖南长沙

另外,为何进论坛时有信息提示论坛时间(10-17)与我的机器的当地时间(10-20)不同?

"                                                             |                                                "
"                                                            /|\                                               "
"                  如是我言________________|                                                "

[ 本帖最后由 scqxaie 于 2006-10-20 16:34 编辑 ]
发表于 2006-10-23 15:18:57 | 显示全部楼层 来自 湖南长沙

对于help.nb中的等值线图---->

通过前面的方法, 最后有:)---->

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×

评分

1

查看全部评分

发表于 2006-10-25 22:08:53 | 显示全部楼层 来自 江苏无锡
数字太多了!一个圈一个数字就够了!
发表于 2006-11-26 20:18:43 | 显示全部楼层 来自 北京
对命令能加一些讲解就更好了           
发表于 2007-5-23 17:46:54 | 显示全部楼层 来自 陕西安康
在6.0版中,已经有加数字标记的功能。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
回复 不支持

使用道具 举报

发表于 2007-5-24 12:41:39 | 显示全部楼层 来自 黑龙江哈尔滨

回复 #30 changqing 的帖子

看到大家都用Text这个命令才能完成相应的抄作,但是使用Text有时会遮挡Text文字后面的网格,这种情况出现在既画网格又用Text的情况,不知道大家是如何避开这个问题的?
回复 不支持

使用道具 举报

 楼主| 发表于 2007-6-9 16:44:40 | 显示全部楼层 来自 湖南长沙
Mathematic6.0的等高线的标注问题终于解决了。
ContourLabels -> Automatic

现在就不知改变坐标轴的方向的问题是否解决了?如Z轴的正向默认的是向上的,现在画图时让它的正向向下。

[ 本帖最后由 qiao_david 于 2007-6-9 16:54 编辑 ]

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×

评分

1

查看全部评分

回复 不支持

使用道具 举报

发表于 2007-6-10 13:45:03 | 显示全部楼层 来自 湖北襄阳

5.2也可以

当初就是觉得等高线跟标注数字交叉影响美观才进行了设置,使得数字背后有白色背景,记不太清了,应该是设置的Background->GrayLevel吧,如果取消这个设置可能就可以了.
回复 不支持

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|小黑屋|联系我们|仿真互动网 ( 京ICP备15048925号-7 )

GMT+8, 2026-1-4 14:03 , Processed in 0.042104 second(s), 14 queries , Gzip On, MemCache On.

Powered by Discuz! X3.5 Licensed

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表