Ggplot2 में ग्रीक प्रतीकों का उपयोग कैसे करें?


101

मेरी श्रेणियों को ग्रीक अक्षरों के साथ नाम देने की आवश्यकता है। मैं उपयोग कर रहा हूं ggplot2, और यह डेटा के साथ खूबसूरती से काम करता है। दुर्भाग्य से मैं यह नहीं जान सकता कि उन ऐनी प्रतीकों को एक्स अक्ष पर (टिक के निशान पर) कैसे रखा जाए और उन्हें किंवदंती में भी प्रदर्शित किया जाए। इसे करने का कोई तरीका है?

अद्यतन: मैं लिंक पर एक नज़र था , हालांकि, वहाँ कोई अच्छा तरीका है कि मैं क्या करना चाहते हैं वर्णित वर्णित है।


4
expressionसमारोह की चर्चा यहां देखें: stackoverflow.com/questions/1395105/getting-latex-into-r-plots
DrewConway

क्या viewportsggplot2 से प्राप्त करने पर कोई संकेत है । यदि ऐसा किया जा सकता है, तो मेरा मानना ​​है कि x-tic मार्क्स को बदलना सीधे आगे होगा।
सैम

आप latex2expपैकेज का उपयोग कर सकते हैं : cran.r-project.org/web/packages/latex2exp/vignettes/…
एनरिक

जवाबों:


152

यहाँ एक उत्कृष्ट विकी का लिंक दिया गया है जो बताता है कि ggplot2 में ग्रीक प्रतीकों को कैसे रखा जाए। सारांश में, यहां आप ग्रीक प्रतीकों को प्राप्त करने के लिए क्या करते हैं

  1. पाठ लेबल:parse = T अंदर का उपयोग करें geom_textया annotate
  2. एक्सिस लेबल:expression(alpha) ग्रीक अल्फा प्राप्त करने के लिए उपयोग करें ।
  3. पहलू लेबल:labeller = label_parsed अंदर का उपयोग करें facet
  4. लीजेंड लेबल: लीजेंड लेबल में उपयोग करें bquote(alpha == .(value))

आप लिंक में इन विकल्पों का विस्तृत उपयोग देख सकते हैं

संपादित करें। टिक के निशान के साथ ग्रीक प्रतीकों का उद्देश्य निम्नानुसार प्राप्त किया जा सकता है

require(ggplot2);
data(tips);
p0 = qplot(sex, data = tips, geom = 'bar');
p1 = p0 + scale_x_discrete(labels = c('Female' = expression(alpha),
                                      'Male'   = expression(beta)));
print(p1);

ऐसा करते समय उपलब्ध विभिन्न प्रतीकों पर पूर्ण प्रलेखन के लिए और उनका उपयोग कैसे करें, देखें ?plotmath


मैं उन ग्रीक प्रतीकों को टिक्स चिह्नित करना चाहता हूं। मुझे यकीन नहीं है कि मैं इस जवाब का पालन करूंगा। मैं यह कोशिश करूंगा और वापस लिखूंगा। दिशा के लिए धन्यवाद।
सैम

यह कम से कम मेरे उद्देश्य के लिए काम नहीं करता है। हालांकि सूचक के लिए धन्यवाद।
सैम

@ नमस्कार, मेरे संपादन में उदाहरण कोड देखें। यह आपको अपने एक्स-एक्सिस टिक मार्क के साथ ग्रीक प्रतीक देता है। क्या यह वही है जिसकी आपको तलाश थी?
रामनाथ

8
मैं एक ग्रीक पत्र के बाद एक तारांकन चिह्न ('*') जोड़ना चाहूंगा। क्या कोई जानता है कि इसे कैसे करना है?
ध्रुवीकरण करें

1
मैं हाल ही में पता चला कि एक और विकल्प उपयोग करने के लिए है substitute, यह भी स्थानों पर जहां में काम करता है expressionकाम नहीं करता, और यहां तक कि जैसे अन्य स्वरूपण की अनुमति देता है italics, boldआदि
सैम

40

सबसे सरल समाधान: यूनिकोड वर्ण का उपयोग करें

नहीं expressionया अन्य संकुल की जरूरत है।
यकीन नहीं होता है कि यह ggplot के लिए एक नई सुविधा है, लेकिन यह काम करता है। इससे ग्रीक और नियमित पाठ को मिलाना आसान हो जाता है (जैसे टिक्स में '*' जोड़ना)

पाठ स्ट्रिंग के भीतर यूनिकोड वर्णों का उपयोग करें। लगता है कि सभी विकल्पों के लिए अच्छी तरह से काम कर सकता हूं। संपादित करें: पहले यह facet लेबल में काम नहीं करता था। यह स्पष्ट रूप से कुछ बिंदु पर तय किया गया है।

library(ggplot2)
ggplot(mtcars, 
       aes(mpg, disp, color=factor(gear))) + 
  geom_point() + 
  labs(title="Title (\u03b1 \u03a9)", # works fine
       x= "\u03b1 \u03a9 x-axis title",    # works fine
       y= "\u03b1 \u03a9 y-axis title",    # works fine
       color="\u03b1 \u03a9 Groups:") +  # works fine
  scale_x_continuous(breaks = seq(10, 35, 5), 
                     labels = paste0(seq(10, 35, 5), "\u03a9*")) + # works fine; to label the ticks
  ggrepel::geom_text_repel(aes(label = paste(rownames(mtcars), "\u03a9*")), size =3) + # works fine 
  facet_grid(~paste0(gear, " Gears \u03a9"))

2019-08-28 को रेप्रेक्स पैकेज (v0.3.0) द्वारा बनाया गया


4
अच्छा उत्तर। यूनिकोड वर्णों पर अधिक जानकारी के लिए देखें: stackoverflow.com/questions/27690729/…
पैट्रिकटी

बहुत लचीला!!
जोआल

2
यह सबसे अच्छा तरीका है क्योंकि आप द्वारा बनाई गई ऑब्जेक्ट प्रकारों के बारे में फ़फ़ नहीं करते हैं - expressionया bquoteआप एक चरित्र ऑब्जेक्ट के साथ समाप्त होते हैं जिसे आप किसी अन्य तरीके से उपयोग कर सकते हैं जो आप वर्ण ऑब्जेक्ट्स का उपयोग करते हैं।
GMSL

1
यह न केवल सबसे आसान तरीका है, बल्कि सबसे अच्छा भी है, क्योंकि यह ज्यादातर मामलों में काम करता है और अन्य कार्यों पर निर्भर नहीं करता है।
स्क्वीजी

यह बहुत सी चेतावनियाँ उत्पन्न करता है, की लगभग सौ पंक्तियाँ:Warning message in grid.Call(C_textBounds, as.graphicsAnnot(x$label), x$x, x$y, : “conversion failure on '>3σ' in 'mbcsToSbcs': dot substituted for <cf>
पटाफिकेसे

37

का प्रयोग करें expression(delta)जहां लोअरकेस के लिए 'डेल्टा' δऔर 'डेल्टा' राजधानी पाने के लिए Δ

यहां देखें ग्रीक पात्रों की पूरी सूची:

Α α अल्फा
Β β बीटा
Γ γ गामा
Δ δ डेल्टा
Ε ε एप्सिलॉन
Ζ ζ जीटा
Η η ईटा
Θ θ थीटा
Ι ι जरा
Κ κ कप्पा
Λ λ लैम्ब्डा
Μ μ म्यू
Ν ν न्यू
Ξ ξ xi
Ο ο ऑमिक्रॉन
Π π अनुकरणीय
Ρ ρ rho
σ ma sigma
Τ
Υ tau σ on upsilon
Φ σ phi σ
Χ ची
Ψ Χ i i psi σ
omega

संपादित करें: टिप्पणियों से नकल, जब अन्य शब्दों के साथ संयोजन के रूप में उपयोग करते हैं जैसे:expression(Delta*"price")


1
मैं एक लेबल कैसे प्राप्त कर सकता हूं Δprice? expression(Deltaprice)काम नहीं करता है, न ही करता हैexpression(Delta price)
jf328

2
धन्यवाद। लेकिन यह कैसे ठीक है? xlab(expression(Delta)price)त्रुटि देता है
jf328

3
अभिव्यक्ति (डेल्टा * मूल्य)
kennyB

क्या एक ग्रीक-रूप प्राप्त करने का एक तरीका है (जैसा कि लैटिन-फॉर्म के विपरीत) अप्सिलॉन? लैटिन के साथ en.wikipedia.org/wiki/Upsilon पत्राचार देखें (मैं en.wikipedia.org/wiki/Upsilon#/media/… में तीसरे चरित्र की तरह कुछ चाहूंगा )
Adrian

6
अभिव्यक्ति (डेल्टा * "मूल्य") काम करता है। वाक्य रचना से प्यार मत करो।
1:17 पर daknowles

16

आपको वह करने की आवश्यकता नहीं latex2expहै जो आप करना चाहते हैं। निम्नलिखित कोड चाल होगा।

ggplot(smr, aes(Fuel.Rate, Eng.Speed.Ave., color=Eng.Speed.Max.)) + 
  geom_point() + 
  labs(title=expression("Fuel Efficiency"~(alpha*Omega)), 
color=expression(alpha*Omega), x=expression(Delta~price))

यहां छवि विवरण दर्ज करें

इसके अलावा, कुछ टिप्पणियों (इस बिंदु के रूप में अनुत्तरित) ने एक ग्रीक पत्र के बाद तारांकन चिह्न (*) लगाने के बारे में पूछा। expression(alpha~"*")काम करता है, इसलिए मैं इसे एक कोशिश देने का सुझाव देता हूं।

अधिक टिप्पणियाँ प्राप्त करने के बारे में पूछा Δ Priceऔर मुझे लगता है कि इसे प्राप्त करने का सबसे सीधा तरीका है expression(Delta~price))। यदि आपको ग्रीक पत्र से पहले कुछ जोड़ने की आवश्यकता है, तो आप यह भी कर सकते हैं: expression(Indicative~Delta~price)जो आपको मिलता है:

यहां छवि विवरण दर्ज करें

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.