※ 引述《boson5566 (勃松)》之铭言:
: 大家好
: 小弟是Mathematica的新手(用的是Mathematic 7)
: 最近因为要跑一些数值法所以才刚接触不久
: 目前碰到了以下两个问题 请各位帮忙解答
: 1.请问要怎么把Mathematica画完的图
: 里面的资料输出成excel.orign可以处理的档案
Plot的话,你的图//InputForm,被Line包起来的就是你要的点
Plot3D的话,你的图//InputForm,被GraphicsComplex包起来的第一个元素
就是你要的点,其他的则是修饰图形的资料
其他的ContourPlot、ContourPlot3D...方法不全然相同,但类似
(* 在你的图里面的任意level寻找被line包起来的东西,把它命名为pts,再转输出*)
pts1=Cases[你的图,Line[pts__]:>pts,Infinity]
: 目前有看过export这个指令 但是输出来的用excel打开是横的
: 而且充满一堆{}.[].以及英文字母 完全不知道该怎么处理..
: 目前想到的是自己用Get coordinate抓坐标自己绘图
: 也有查到用
: data = Table[{x,x^2,x^3,x^4},{x,0,20}];
: Export["data.csv",data]
(* 如果有很多函数,那就会分别存在不同工作表 *)
Export["pts1.xls",pts1]
: 不过他的间隔单位是1 而我需要的间隔单位很小很小(约10^-4)
: 所以也是不知道该怎么处理
: 2.怎么把两张图画成一张图?
: 目前查到SHOW这个指令或是用PLOT画在一起
: 不过我想要的是两张图不同区间可以合在同一张图上
: 例如A的范围是0~1 B的范围是1~2 我想把AB合在一起画成0~2
: 能有指令的话最好 目前我想到的是把资料抓出来再自己重画
: 不过资料也抓不出来(崩溃)
: 拜托各位高手救救小弟
资料都抓出来了,ListPlot[{资料1,资料2}]
plot1 = Plot[Sin[x], {x, 0, 2 Pi}]
plot2 = Plot[2 + Sin[x], {x, 0, 2 Pi}]
plot3 = Plot3D[Sin[x + y], {x, 0, 2 Pi}, {y, 0, 2 Pi}]
(* [[1]]只的事第一个元素,把[[1]]想成就是抓第一条件的资料 *)
threesmall1 =
Cases[plot1, Line[threesmall__] :> threesmall, Infinity][[1]];
threesmall2 =
Cases[plot2, Line[threesmall__] :> threesmall, Infinity][[1]];
(* 这边的[[1]]只的是指抓资料点,其他的修饰图形的资料就不抓取了 *)
threesmall3d =
Cases[plot3, GraphicsComplex[threesmall3d__] :> threesmall3d,
Infinity][[1]]
ListLinePlot[{threesmall1, threesmall2}]
ListPlot3D[threesmall3d]
ListPlot3D[{#[[1]], #[[2]], Abs[#[[3]]]} & /@ threesmall3d]