2012-01-02 37 views
6

जब मैं एक्सप, 2^एक्स, 3^एक्स जैसे कई फ़ंक्शंस खींचता हूं, तो क्या प्रत्येक फ़ंक्शन का लेबल उत्पन्न करना संभव है?गणित में स्वचालित रूप से फ़ंक्शन नाम कैसे उत्पन्न करें?

मेरे अब कोड:

Plot[{Exp[x], 2^x, 3^x}, {x, -5, 2}, AspectRatio -> Automatic, PlotStyle -> {Red, Green, Blue}] 

क्या मेरा मतलब है इस मामले में 3 लेबल उत्पन्न उपयोगकर्ता यह है कि क्या समारोह बताने के लिए है।

जैसे:

enter image description here

आप यह कैसे तैयार करूं?

+0

हालांकि यह ग्राफिक्स [प्लॉट के बजाय], [यह] (http://stackoverflow.com/a/7547457 का उपयोग करता है/353410) आपको कुछ विचार दे सकते हैं –

+2

संभावित डुप्लिकेट [मैं गणित में विभिन्न घटता कैसे लेबल करूं?] (Http://stackoverflow.com/questions/7221315/how-do-i-label- अलग-curves-in -मैथेमैटिका) – abcd

उत्तर

4

शायद यह काम करता है: Plot में Tooltip का प्रयोग करें टूलटिप्स के साथ एक Graphics वस्तु उत्पन्न करने के लिए। तब इच्छित स्थान में वांछित टेक्स्ट रखने का विकल्प टूलटिप पुनर्लेखन:

Plot[ 
[email protected]{Exp[x], 2^x, 3^x}, {x, -5, 2}, 
AspectRatio -> Automatic, 
PlotStyle -> {Red, Green, Blue}, 
PlotRange -> All, 
PlotRangePadding -> 1.1] /. 
{ 
Tooltip[{_, color_, line_}, tip_] 
:> 
{Text[Style[tip, 14], {.25, 0} + line[[1, -1]]], color, line} 
} 

Mathematica graphics

+0

यह प्रतीकात्मक ग्राफिक्स वस्तुओं में प्रतिस्थापन की शक्ति का एक बहुत ही सुंदर और चालाक उपयोग है। हम आमतौर पर इस तरह से हमारे सभी पोस्ट प्रोसेसिंग भी करते हैं। –

1

एक तरह से उपयोग करने के लिए PlotLegends

है (मैं इसे बहुत ज्यादा पसंद नहीं है, लेकिन यह तुम क्या चाहते करने के लिए एक आसान तरीका है)

<< PlotLegends` 
Clear[x]; 
funs = {Exp[x], 2^x, 3^x}; 
legends = Map[[email protected][#, "TR", 12] &, funs]; 
Plot[[email protected], {x, -5, 2}, AspectRatio -> Automatic, 
PlotStyle -> {Red, Green, Blue}, PlotLegend -> legends] 

enter image description here

लिए सहायता देखने किंवदंती को और अधिक अनुकूलित करें। उपरोक्त डिफ़ॉल्ट का उपयोग करता है।

http://reference.wolfram.com/mathematica/PlotLegends/tutorial/PlotLegends.html

3

Tooltip प्रदर्शित लेबल के साथ वैकल्पिक तरीका है, जबकि माउस सूचक समारोह रेखांकन पर है:

Plot[[email protected]{Exp[x], 2^x, 3^x}, {x, -5, 2}, AspectRatio -> Automatic, 
              PlotStyle -> {Red, Green, Blue}] 
4

मुझे यकीन है कि क्या नियम हैं नहीं कर रहा हूँ एक और, अलग जवाब एक ही प्रश्न के लिए जोड़ने के लिए । लेकिन यह करने के लिए एक और अलग तरीका है। अगर मुझे इसे अपने पहले जवाब में जोड़ना है, तो मैं ऐसा कर सकता हूं।

आप पाठ आदेशों का उपयोग करके हाथ से टेक्स्ट लेबल जोड़ सकते हैं। मुझे लगता है कि यह बेहतर दिखता है।

Clear[x]; 
funs = {Exp[x], 2^x, 3^x}; 
funNames = Style[#, 12] & /@ funs; 

(*the x-axis plot range used *) 
from = -5; to = 2; 

(* generate the coordinates at the end of the plot lines*) 
pos = Map[{to, #} &, funs /. x -> to]; 

(*generate the text labels *) 
text = Map[Text[#[[1]], #[[2]], {-1, 0}] &, Thread[{funNames, pos}]]; 

प्लॉट अंतिम परिणाम (गद्दी का एक छोटा रेंज साजिश को जोड़ा गया है, ताकि लेबल जोड़े गए पूरी तरह से देखा जाता है)

Plot[funs, {x, from, to}, 
PlotRangePadding -> {1, 1}, 
PlotStyle -> {Red, Green, Blue}, 
PlotRange -> All, 
Epilog -> text 
] 

enter image description here

अद्यतन (: यहाँ एक तरीका है 1)

सैम ने एक सरल तरीके से नीचे पूछा। मुझे अब यकीन नहीं है। लेकिन इस विधि का उपयोग करना आसान बनाने का एक तरीका है, एक फ़ंक्शन बनाना है और फिर पाठ लेबल उत्पन्न करने के लिए एक बार इस फ़ंक्शन को कॉल करना है। आप यह फ़ंक्शन डाल सकते हैं जहां आप अपने सभी अन्य कार्यों को हर समय उपयोग करते हैं, और बस इसे कॉल करें।

यहाँ कुछ है: सबसे पहले समारोह

(*version 1.1*) 

myLegend[funs_List,     (*list of functions to plot*) 
    x_,         (*the independent variable*) 
    from_?(NumericQ[#] && Im[#] == 0 &),(*the x-axis starting plot range*) 
    to_?(NumericQ[#] && Im[#] == 0 &) (*the x-axis ending plot range*) 
    ] := Module[{funNames, pos, text, labelOffset = -1.3}, 

    (*make label names*) 
    funNames = Style[#, 12] & /@ funs; 

    (*generated the coordinates at the end of the plot lines*) 
    pos = Map[{to, #} &, funs /. x -> to]; 

    (*generate the Text calls*) 
    text = Map[Text[#[[1]], #[[2]], {labelOffset, 0}] &, 
    Thread[{funNames, pos}]] 
    ]; 

बारे में और अब सिर्फ किसी भी समय आप लेबल के साथ प्लॉट करने के लिए चाहते हैं तो ऊपर कहते हैं। यह कोड की केवल 1-2 अतिरिक्त लाइनें होगी।इस तरह:

enter image description here

आप इसे संशोधित कर सकते हैं के रूप में आप चाहते हैं:

Clear[x] 
from = -5; to = 2; 
funs = {Exp[x], 2^x, 3^x}; 

Plot[funs, {x, from, to}, PlotRangePadding -> {1, 1}, 
PlotStyle -> {Red, Green, Blue}, PlotRange -> All, 
Epilog -> myLegend[funs, x, from, to]] 

enter image description here

यहाँ कुछ उदाहरण हैं।

+0

यह बहुत अच्छा लग रहा है, लेकिन यह मेरे लिए थोड़ा जटिल है। क्या ऐसा करने का कोई आसान तरीका है? धन्यवाद ~ – sam

संबंधित मुद्दे