Re: [問題] 兩個 x 軸的圖

看板Mathematica作者 (養花種魚數月亮賞星星)時間13年前 (2011/09/20 13:00), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串2/2 (看更多)
※ 引述《oversky0 (oversky0)》之銘言: : 我有兩個函數 : y = f(x1); : y = f(x2); : 請問如何將這兩個函數畫在同一張圖上, : 並且同時顯示 x1, x2 兩個軸向刻度? 最近剛好有需要,自己寫了一個 myplot[{f_,g_},range_List,color_List]:= Block[{p1,p2,a1,a2,a3,b1,b2,myrange=range,mycolor=color}, (* 先畫出fun1 fun2 ,但不輸出 *) p1=Plot[f,{x,myrange[[1]],myrange[[2]]},Axes->False,Frame->True]; p2=Plot[g,{x,myrange[[1]],myrange[[2]]},Axes->False,Frame->True]; (*取出fun1 刻度 *) a1=AbsoluteOptions[p1,FrameTicks][[1,2,2]]; (*取出fun2 刻度 *) a2=AbsoluteOptions[p2,FrameTicks][[1,2,2]]; (* 對fun2 的刻度做轉換 *) b1=p1[[-1,4,-1,-1]]; b2=p2[[-1,4,-1,-1]]; a3=MapThread[ Insert[#1,#2,1]&,{a2[[All,2;;-1]], b1[[1]]+((b1[[2]]-b1[[1]])/(b2[[2]]-b2[[1]])*(#- b2[[1]]))&/@a2[[All,1]]}]; (* 轉換fun2 ,並將 轉換後fun2 的刻度作為frametick *) (* 如果需要其他設定,直接放在ImageSize後面即可 *) Plot[{f,b1[[1]]+((b1[[2]]-b1[[1]])/(b2[[2]]-b2[[1]])* (g-b2[[1]]))},{x,myrange[[1]],myrange[[2]]}, PlotStyle->{{Thickness[0.01],mycolor[[1]]}, {Thickness[0.01],mycolor[[2]]}}, Axes->False,Frame->True, FrameTicks->{{a1,a3},{Automatic,None}}, ImageSize->500]] usage: myplot[{fun1,fun2},range,{color1,color2}] myplot[{0.25 Cos[x], 0.5 + Abs@Sin[x]}, {0, 2 Pi}, {Red, Blue}] -- 養花種魚數月亮賞星星 http://chungyuandye.twbbs.org -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 218.173.129.153 ※ 編輯: chungyuandye 來自: 218.173.129.153 (09/20 13:26)
文章代碼(AID): #1EU1tlk_ (Mathematica)
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 2 之 2 篇):
文章代碼(AID): #1EU1tlk_ (Mathematica)