জিজিপ্লট ব্যবহার করে কোন প্লট তৈরি করার সময় ন্যায়বিচার এবং ন্যায়বিচারগুলি কী করতে পারে?


159

আমি যখনই জিজিপ্লাট ব্যবহার করে প্লট করি তখনই আমি লাইনে ন্যায়বিচারের জন্য বিভিন্ন মান চেষ্টা করার সময় কিছুটা সময় ব্যয় করি

+ opts(axis.text.x = theme_text(hjust = 0.5))

অক্ষের লেবেলগুলিকে সীমাবদ্ধ করার জন্য যেখানে অক্ষ লেবেলগুলি প্রায় অক্ষটি স্পর্শ করে এবং এর বিরুদ্ধে ফ্লাশ হয় (অক্ষের সাথে যুক্তিযুক্ত, তাই কথা বলার জন্য)। যাইহোক, আসলে কী হচ্ছে তা আমি বুঝতে পারি না। প্রায়শই, hjust = 0.5যেমন নাটকীয়ভাবে পৃথক ফলাফল দেয় যেমন hjust = 0.6উদাহরণস্বরূপ, আমি বিভিন্ন মূল্যবোধের সাথে খেলে কেবল এটি বের করতে সক্ষম হইনি।

কীভাবে আমাকে ন্যায়বিচার ও ন্যায়বিচারের বিকল্পগুলি কাজ করে তার একটি বিস্তৃত ব্যাখ্যায় আমাকে নির্দেশ করতে পারে?


1
প্রথম উত্তরের মন্তব্যে আমি একটি নির্দিষ্ট উদাহরণ দিয়েছি। স্পষ্টতই 0-1 এর বাইরে সংখ্যাগুলি অপরিবর্তিত, যা হোল্ড = -1 এর উদ্ভট আচরণ কেন তা যদি ব্যাখ্যা না করে তবে কমপক্ষে ব্যাখ্যা করে যে উদ্ভটটি প্রত্যাশা করা উচিত।
উইলিয়াম গন

উত্তর:


277

এর মান hjustএবং vjustশুধুমাত্র 0 এবং 1 এর মধ্যে সংজ্ঞায়িত করা হয়:

  • 0 এর অর্থ বাম-ন্যায়সঙ্গত
  • 1 এর অর্থ হ'ল ন্যায়সঙ্গত

সূত্র: ggplot2, হ্যাডলি উইকহাম, পৃষ্ঠা 196

(হ্যাঁ, আমি জানি যে বেশিরভাগ ক্ষেত্রে আপনি এটিকে এই সীমার বাইরেও ব্যবহার করতে পারেন তবে এটি কোনও নির্দিষ্ট উপায়ে আচরণ করার প্রত্যাশা করবেন না This এটি স্পেসের বাইরে))

hjustঅনুভূমিক ন্যায়সঙ্গততা vjustনিয়ন্ত্রণ করে এবং উল্লম্ব ন্যায়সঙ্গততা নিয়ন্ত্রণ করে।

একটি উদাহরণ এটি পরিষ্কার করা উচিত:

td <- expand.grid(
    hjust=c(0, 0.5, 1),
    vjust=c(0, 0.5, 1),
    angle=c(0, 45, 90),
    text="text"
)

ggplot(td, aes(x=hjust, y=vjust)) + 
    geom_point() +
    geom_text(aes(label=text, angle=angle, hjust=hjust, vjust=vjust)) + 
    facet_grid(~angle) +
    scale_x_continuous(breaks=c(0, 0.5, 1), expand=c(0, 0.2)) +
    scale_y_continuous(breaks=c(0, 0.5, 1), expand=c(0, 0.2))

এখানে চিত্র বর্ণনা লিখুন


hjustঅক্ষ পাঠ্যটি যখন পরিবর্তন করবেন তখন কী ঘটে তা বোঝার জন্য আপনাকে বুঝতে হবে অক্ষ অক্ষের সাথে অনুভূমিক প্রান্তিককরণটি এক্স-অক্ষের সাথে নয়, পুরো প্লটের সাথে সংজ্ঞায়িত করা হয়েছে (যেখানে এতে y- অক্ষের পাঠ্য অন্তর্ভুক্ত রয়েছে)। (এটি আমার দৃষ্টিতে দুর্ভাগ্য। অক্ষের সাথে সম্পর্কিত প্রান্তিককরণ তৈরি করা আরও বেশি কার্যকর হবে))

DF <- data.frame(x=LETTERS[1:3],y=1:3)
p <- ggplot(DF, aes(x,y)) + geom_point() + 
    ylab("Very long label for y") +
    theme(axis.title.y=element_text(angle=0))


p1 <- p + theme(axis.title.x=element_text(hjust=0)) + xlab("X-axis at hjust=0")
p2 <- p + theme(axis.title.x=element_text(hjust=0.5)) + xlab("X-axis at hjust=0.5")
p3 <- p + theme(axis.title.x=element_text(hjust=1)) + xlab("X-axis at hjust=1")

library(ggExtra)
align.plots(p1, p2, p3)

এখানে চিত্র বর্ণনা লিখুন


vjustঅক্ষ লেবেলগুলির অ্যালগমেন্টের সাথে কী ঘটে তা সন্ধান করতে :

DF <- data.frame(x=c("a\na","b","cdefghijk","l"),y=1:4)
p <- ggplot(DF, aes(x,y)) + geom_point()

p1 <- p + theme(axis.text.x=element_text(vjust=0, colour="red")) + 
        xlab("X-axis labels aligned with vjust=0")
p2 <- p + theme(axis.text.x=element_text(vjust=0.5, colour="red")) + 
        xlab("X-axis labels aligned with vjust=0.5")
p3 <- p + theme(axis.text.x=element_text(vjust=1, colour="red")) + 
        xlab("X-axis labels aligned with vjust=1")


library(ggExtra)
align.plots(p1, p2, p3)

এখানে চিত্র বর্ণনা লিখুন


1
সুতরাং কোণ = 45 এর ক্ষেত্রে, যখন আমার বিভিন্ন দৈর্ঘ্যের অক্ষ লেবেল রয়েছে, আসুন 25 থেকে 5 টি অক্ষর পর্যন্ত বলি, সেগুলি শব্দের সীমানার ডান বা বামে ন্যায়সঙ্গতভাবে সাজানো হয়নি। অক্ষ কটাক্ষপাত এখানে যদি আমি কোণ = 45 ব্যবহার করতে ছিল, কিভাবে আমি তাদের ডান-সমর্থনযোগ্য এবং অক্ষ বিরুদ্ধে ফ্লাশ করতে হবে?
উইলিয়াম গন

আমি যে চেষ্টা করেছি, এবং আমি পেতে Error in grid.Call("L_textBounds", as.graphicsAnnot(x$label), x$x, x$y, : Polygon edge not found (zero-width or zero-height?)জন্য vjust = .72এবং উচ্চতর।
উইলিয়াম গন

1
@ উইলিয়ামগান আমি আপনাকে নিজের কোড সহ একটি নতুন প্রশ্ন পোস্ট করার পরামর্শ দিচ্ছি।
অ্যান্ড্রি

1
অপ্টটি যেহেতু অবচয় হ'ল, আমরা অক্ষের শিরোনামের অবস্থানটি কীভাবে সমন্বয় করব?
সাইরাস

1
@ সাইরাসমোহমদীয়ান, আমি এই উত্তরটি বর্তমান জিজিপ্লট 2 সিনট্যাক্সের সাথে কাজ করার জন্য সম্পাদনা করেছি।
শুকনো

16

সম্ভবত সবচেয়ে স্পষ্টতই ggplot2 বইয়ের চিত্র B.1 (d) , এর পরিশিষ্টগুলি http://ggplot2.org/book/appendices.pdf এ উপলব্ধ ।

এখানে চিত্র বর্ণনা লিখুন

তবে এটি এতটা সহজ নয়। hjustএবং এখানে vjustবর্ণিত রয়েছে যে এটি কীভাবে কাজ করে geom_textএবং theme_text(কখনও কখনও)। এটির ভাবনা করার একটি উপায় হ'ল পাঠের চারপাশের একটি বাক্সটি চিন্তা করা, এবং যেখানে বাক্সের আকারের সাথে ইউনিটগুলিতে রেফারেন্স পয়েন্ট রয়েছে সেই বাক্সের সাথে সম্পর্কিত (এবং এভাবে বিভিন্ন আকারের পাঠ্যের জন্য পৃথক)। একটি hjust0.5 এর এবং একটি vjust0.5 কেন্দ্র রেফারেন্স পয়েন্ট বাক্সের। হ্রাস করা hjustবাক্সের প্রস্থ বারের পরিমাণের সাথে ডানদিকে সরায় 0.5-hjust। সুতরাং যখন hjust=0, বাক্সের বাম প্রান্তটি রেফারেন্স পয়েন্টে রয়েছে। বর্ধমান hjustবাক্সটি বাক্সের প্রস্থ বারের পরিমাণের সাথে বাম দিকে নিয়ে যায় hjust-0.5। কখনhjust=1, বাক্সটি কেন্দ্রিক থেকে অর্ধেক বাক্সের প্রস্থে বামে সরানো হয়েছে, যা রেফারেন্স পয়েন্টটিতে ডান প্রান্তটি রাখে। যদি hjust=2, বাক্সের ডান প্রান্তটি রেফারেন্স পয়েন্টের বাক্স প্রস্থের বামে থাকে (কেন্দ্রটি রেফারেন্স পয়েন্টের 2-0.5=1.5বাক্স প্রস্থের বামে থাকে ical উল্লম্ব জন্য, কম উপরে থাকে এবং আরও নীচে থাকে This এটি কার্যকরভাবে চিত্র চিত্র B.1 (d) ) বলে, তবে এটি [0,1] ছাড়িয়ে এক্সট্রাপোলেট করে।

তবে, কখনও কখনও এটি কাজ করে না। উদাহরণ স্বরূপ

DF <- data.frame(x=c("a","b","cdefghijk","l"),y=1:4)
p <- ggplot(DF, aes(x,y)) + geom_point()

p + opts(axis.text.x=theme_text(vjust=0))
p + opts(axis.text.x=theme_text(vjust=1))
p + opts(axis.text.x=theme_text(vjust=2))

তিনটি পরের প্লটটি অভিন্ন ical কেন জানি না। এছাড়াও, যদি পাঠ্যটি ঘোরানো হয়, তবে এটি আরও জটিল। বিবেচনা

p + opts(axis.text.x=theme_text(hjust=0, angle=90))
p + opts(axis.text.x=theme_text(hjust=0.5 angle=90))
p + opts(axis.text.x=theme_text(hjust=1, angle=90))
p + opts(axis.text.x=theme_text(hjust=2, angle=90))

প্রথমটিতে লেবেলগুলি ন্যায়সঙ্গত (নীচের বিপরীতে) রেখে গেছে, দ্বিতীয়টি তাদের কয়েকটি বাক্সে কেন্দ্র করে যাতে তাদের কেন্দ্রগুলি লাইন করে থাকে এবং তৃতীয়টিতে তাদের ডান ন্যায়সঙ্গত হয় (সুতরাং তাদের ডান দিকগুলি অক্ষের পাশে লাইন থাকে)। শেষটি, ভাল, আমি সুসংগতভাবে ব্যাখ্যা করতে পারি না। এটি পাঠ্যের আকার, প্রস্থের মাপের আকারের সাথে কিছু করার আছে এবং আমি কী জানি তা নিশ্চিত নই।


এর জন্য অনেক ধন্যবাদ, এটি ক্ষেত্রে যেখানে কোণ = 90 এর ক্ষেত্রে সহায়তা করে তবে আমি কী পাই না কেন লেবেলগুলির সঠিক-ন্যায়সঙ্গততা যখন কোণ = 90 এর পরিবর্তে আর কাজ করে না, আমি কোণ = 45 ব্যবহার করি। আমি কোণ = 45, hdd = 0 এর আচরণ বুঝতে পারি, তবে কোণ = 45, hdd = -1 কেবল উদ্ভট।
উইলিয়াম গন

আপনার প্রথম উদাহরণটি বাস্তবে কাজ করে। আপনার মনে হয় যে এটি কাজ করে না কারণ আপনার সমস্ত লেবেলের উচ্চতা একই। এটি আবার চেষ্টা করুন DF <- data.frame(x=c("a\na","b","cdefghijk","l"),y=1:4)- অর্থ \nশিরোনামের একটিতে লাইন ব্রেক সহ ।
অ্যান্ড্রি

@ উইলিয়াম, আমার মনে হয় @ অ্যান্ড্রির ঠিক আছে; hjustএবং vjustকেবল 0 এবং 1 এর মধ্যে সংজ্ঞায়িত করা হয়; এই সীমার বাইরে আচরণের বোধ করার দরকার নেই।
ব্রায়ান ডিগস

অ্যান্ড্রি, আপনি ঠিক বলেছেন। তবে অক্ষের শিরোনাম / পাঠ্যের ক্ষেত্রে একটি সুসংগত মানসিক মডেল তৈরি করতে আমার এখনও অনেক সময় কঠিন। অক্ষ পাঠ্যের জন্য, hjust=0টিক দিয়ে বাম প্রান্তটি সারিবদ্ধ করে; hjust=0.5টিক উপর কেন্দ্র; hjust=1টিক দিয়ে ডান প্রান্তটি সারিবদ্ধ করে (রেফারেন্স পয়েন্টের তুলনায় মুভিং বক্স)। কিন্তু vjustপ্রান্তিক মধ্যে একটি লম্বা লেবেল আকার বাক্স।
ব্রায়ান ডিগস

@ ব্রায়ানডিগস vjustঅক্ষ অক্ষরগুলির ক্ষেত্রে , সমস্ত লেবেল একই সাথে একে অপরের সাথে একত্রিত হয়। সুতরাং উপরের সমস্ত প্রান্তটি যখন সারিবদ্ধ হয় vjust=1এবং তেমনিভাবে নীচের সমস্ত প্রান্তগুলি যখন থাকে তখন vjust=0। এটি আমার কাছে সঠিক ধারণা দেয়।
অ্যান্ড্রি
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.