2011-09-30 14 views
5

में वाई अक्ष के साथ एक्स अक्ष को संरेखित करने के लिए मजबूर करना मैथमैटिका में, जब मैं कभी-कभी चीजों को साजिश करता हूं तो मुझे हमेशा एक्स-अक्ष को साजिश के सटीक तल के साथ लाइन करने के लिए नहीं मिलता है। क्या ऐसा कोई तरीका है जिससे मैं इसे हर समय करने के लिए मजबूर कर सकता हूं? मैं http://i.imgur.com/3lcWd.pngगणित प्लॉट

x- अक्ष तल पर शून्य टिक मार्क रास्ता साथ पूरी तरह से पंक्तिबद्ध करने के लिए, के रूप में y- अक्ष के बीच में नहीं हैं:

यहाँ मैं के बारे में बात कर रहा हूँ का एक उदाहरण है यह उस छवि में है।

कोई भी तरीका मैं इसे पूरा कर सकता हूं?

+0

मुझे लगता है कि यह मदद करेगा यदि आप गणित विवरण जोड़ सकते हैं जिसने आपके प्रश्न पर उस साजिश/छवि का उत्पादन किया हो? – dbjohn

उत्तर

9

विकल्प AxesOrigin -> {0,0}

+0

बिल्कुल सही! यही वही है जो मैं ढूंढ रहा था, धन्यवाद! –

4

तुम भी तरह कुछ इस्तेमाल कर सकते हैं का उपयोग करें: Frame -> {{Automatic, None}, {Automatic, None}}

(इसके अलावा मुझे लगता है कि इस तथ्य यह चुनने नहीं कर रहा है कि {0,0} डिफ़ॉल्ट रूप से इसका मतलब है कि y=0PlotRangePadding द्वारा सीमा में लाया जा रहा है कि ताकि। नजर रखने के लिए एक और विकल्प हो सकता है।)

5

निर्देशांक मानों के बावजूद निम्नलिखित आपके अक्षरों को बाएं और नीचे खींचेंगे:

aPlot[f_, var_, opts : OptionsPattern[]] := 
Plot[f, var, 
    AxesOrigin -> 
    First /@ (# /. AbsoluteOptions[Plot[f, var, opts], #] &@PlotRange), opts] 

aPlot[Evaluate[Table[BesselJ[n, x], {n, 4}]], {x, 0, 10}, Filling -> Axis] 

enter image description here

aPlot[Sin[x], {x, 0, 2 Pi}] 

enter image description here

+0

+1 हंडी! ----- – Simon

+0

@ अविश्वासी: मुझे आपकी सामान्यता के लिए आपके समाधान और एलेक्सी पॉपकोव का व्युत्पन्न समाधान पसंद है, लेकिन मैं उनसे दूर रहना चाहता हूं क्योंकि यह बहुत जटिल है और मुझे जो संरेखण करना है वह आसानी से 'एक्सिसऑरिगिन' से संतुष्ट है -> {0, 0} '। यह बहुत बुरा है जैसे कि यह पहले से ही गणित में नहीं बनाया गया है। –

+0

@ माइक यदि आपको केवल {0,0} मामले की आवश्यकता है, तो स्पष्ट रूप से 'एक्सिसऑरिगिन' जाने का रास्ता है! –

1

यहाँ बेलिसारियस के कोड के आधार पर (IMO) और अधिक सुरुचिपूर्ण विधि है जो DisplayFunction विकल्प का उपयोग करता (इस विकल्प पर here दिलचस्प चर्चा को देखें):

Plot[Evaluate[Table[BesselJ[n, x], {n, 4}]], {x, 0, 10}, 
Filling -> Axis, 
DisplayFunction -> 
    Function[{plot}, 
    Show[plot, 
    AxesOrigin -> 
    First /@ (PlotRange /. AbsoluteOptions[plot, PlotRange]), 
    DisplayFunction -> Identity]]] 

दोनों विधियों का एकमात्र दोष यह है कि AbsoluteOptions does not always give correct value of PlotRange। समाधान the Ticks hack (जो PlotRangePadding की स्पष्ट मूल्यवर्धित के साथ पूरा PlotRange देता है) का उपयोग करने के लिए है:

pl1 = Plot[Evaluate[Table[BesselJ[n, x], {n, 4}]], {x, 0, 10}, 
    Filling -> Axis, 
    DisplayFunction -> 
    Function[{plot}, 
    Show[plot, AxesOrigin -> First /@ completePlotRange[plot], 
     DisplayFunction -> Identity]]]; 
pl2 = Plot[Evaluate[Table[BesselJ[n, x], {n, 4}]], {x, 0, 10}, 
    Filling -> Axis, Frame -> {{Automatic, None}, {Automatic, None}}, 
    Axes -> False]; 
Rasterize[pl1] == Rasterize[pl1] 

=> True 
:

completePlotRange[plot_] := 
[email protected]@ 
    Reap[Rasterize[ 
    Show[plot, Ticks -> (Sow[{##}] &), DisplayFunction -> Identity], 
    ImageResolution -> 1]] 
Plot[Evaluate[Table[BesselJ[n, x], {n, 4}]], {x, 0, 10}, 
Filling -> Axis, 
DisplayFunction -> 
    Function[{plot}, 
    Show[plot, AxesOrigin -> First /@ completePlotRange[plot], 
    DisplayFunction -> Identity]]] 

ऐसा नहीं है कि इस कोड को वास्तव में बस Frame -> {{Automatic, None}, {Automatic, None}}, Axes -> False निर्दिष्ट करने के रूप में ही प्रतिपादन देता है नोट करने के लिए दिलचस्प है

+0

मुझे प्लॉट्रेंज विसंगति के बारे में पता था, लेकिन मैंने सोचा कि यह कुछ प्लॉट [] चचेरे भाई से संबंधित था, लेकिन प्लॉट [] खुद ही नहीं था। –