বারপ্লটের জন্য আরে অক্ষ অক্ষের লেবেল ঘোরানো


99

আমি চেষ্টা করছি যে এক্স অক্ষের লেবেলগুলি কোনও বার্প্লোটে 45 ডিগ্রি ঘোরানো হোক কোনও ভাগ্য ছাড়াই। আমার নীচে এই কোডটি রয়েছে:

barplot(((data1[,1] - average)/average) * 100,
        srt       = 45,
        adj       = 1,
        xpd       = TRUE,
        names.arg = data1[,2],
        col       = c("#3CA0D0"),
        main      = "Best Lift Time to Vertical Drop Ratios of North American Resorts",
        ylab      = "Normalized Difference",
        yaxt      = 'n',
        cex.names = 0.65,
        cex.lab   = 0.65)

উত্তর:


60

উত্তর দাউদের প্রতিক্রিয়া সম্পাদনা করুন:

এখানে এক ধরণের হ্যাকিশ উপায়। আমি অনুমান করছি একটি সহজ উপায় আছে। তবে বার বারগুলি এবং বারের অবস্থানগুলি সংরক্ষণ করে আপনি লেবেলগুলির প্লট পাঠ্য দমন করতে পারেন barplotএবং উপরে এবং নীচে কিছুটা টুইট করতে পারেন। এখানে এমটিকার্স ডেটা সেট সহ একটি উদাহরণ রয়েছে:

x <- barplot(table(mtcars$cyl), xaxt="n")
labs <- paste(names(table(mtcars$cyl)), "cylinders")
text(cex=1, x=x-.25, y=-1.25, labs, xpd=TRUE, srt=45)

4
সাবধানতা : আপনি যদি ব্যবহার করছেন তবে আপনি beside = TRUEসম্ভবত প্রতি গ্রুপে কেবল একটি লেবেল চান তার colMeans(x)পরিবর্তে আপনি সম্ভবত ব্যবহার xকরতে চাইবেন।
মাইকেলচিরিকো

277

lasচ্ছিক প্যারামিটার লাস = 2 ব্যবহার করুন।

barplot(mytable,main="Car makes",ylab="Freqency",xlab="make",las=2)

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


4
আমি বিশ্বাস করি যে এটি গ্রহণযোগ্য উত্তর হওয়া উচিত। প্রশ্নটিতে ব্যবহৃত বেস বারপ্লট ফাংশনের একটি প্যারামিটার ব্যবহার করে নিখুঁতভাবে কাজ করে।
jwhaley58

4
সম্মত, এটি গ্রহণযোগ্য উত্তর হওয়া উচিত। আরও অনেক সংক্ষিপ্ত সমাধান
স্লানল

17
মার্জিনগুলি সামঞ্জস্য করতে সমান (মার্ = সি (15,4,4,2)) ব্যবহার করুন যাতে উলম্ব লেবেলগুলি চিত্র থেকে কাটা না যায়।
স্টিভেন মাগানা-জুক

24
আমি ব্যক্তিগতভাবে এই পদ্ধতির পছন্দ, কিন্তু এটা ওপি মূল প্রশ্নের উত্তর দিতে না: আমি x পেতে চেষ্টা করছি অক্ষ লেবেল একটি barplot 45 ডিগ্রী আবর্তিত করা
arpieb

4
আপনি দেখতে পারেন 'মেক' লেবেল দ্বারা আচ্ছাদিত। কিভাবে ঠিক হবে এটা?
ফিলিপ বার্টুজি

31

বেস গ্রাফিক্স ব্যবহার করে 90 ডিগ্রি এর চেয়ে কম কোণ বা এক্স অক্ষের লেবেলগুলি ঘোরান। কোডটি আর এফএকিউ থেকে অভিযোজিত :

par(mar = c(7, 4, 2, 2) + 0.2) #add room for the rotated labels

#use mtcars dataset to produce a barplot with qsec colum information
mtcars = mtcars[with(mtcars, order(-qsec)), ] #order mtcars data set by column "qsec"

end_point = 0.5 + nrow(mtcars) + nrow(mtcars) - 1 #this is the line which does the trick (together with barplot "space = 1" parameter)

barplot(mtcars$qsec, col = "grey50", 
        main = "",
        ylab = "mtcars - qsec", ylim = c(0,5 + max(mtcars$qsec)),
        xlab = "",
        space = 1)
#rotate 60 degrees (srt = 60)
text(seq(1.5, end_point, by = 2), par("usr")[3]-0.25, 
     srt = 60, adj = 1, xpd = TRUE,
     labels = paste(rownames(mtcars)), cex = 0.65)

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


9

আপনি কেবল নিম্নলিখিত ফাংশনে আপনার ডেটা ফ্রেমটি পাস করতে পারেন :

rotate_x <- function(data, column_to_plot, labels_vec, rot_angle) {
    plt <- barplot(data[[column_to_plot]], col='steelblue', xaxt="n")
    text(plt, par("usr")[3], labels = labels_vec, srt = rot_angle, adj = c(1.1,1.1), xpd = TRUE, cex=0.6) 
}

ব্যবহার:

rotate_x(mtcars, 'mpg', row.names(mtcars), 45)

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

আপনি প্রয়োজন হিসাবে লেবেলের ঘূর্ণন কোণ পরিবর্তন করতে পারেন ।



6

আপনি অতিরিক্ত স্তর যুক্ত এক্স-অক্ষের লেবেলটি ঘোরানোর জন্য ggplot2 ব্যবহার করতে পারেন

theme(axis.text.x = element_text(angle = 90, hjust = 1))

2

"বারপ্লট" লাইনে একটি সতর্কতা সহ আন্দ্রে সিলভার উত্তর আমার পক্ষে দুর্দান্ত কাজ করে:

barplot(mtcars$qsec, col="grey50", 
    main="",
    ylab="mtcars - qsec", ylim=c(0,5+max(mtcars$qsec)),
    xlab = "",
    xaxt = "n", 
    space=1)

"Xaxt" আর্গুমেন্টটি লক্ষ্য করুন। এটি ছাড়াই, লেবেলগুলি দুবার টানা হয়, 60 ডিগ্রি ঘূর্ণন ছাড়াই প্রথমবার।


1

বার প্লটগুলির ডকুমেন্টেশনে আমরা অতিরিক্ত পরামিতিগুলি ( ...) যা ফাংশন কলটিতে পাঠানো যেতে পারে সে সম্পর্কে পড়তে পারি:

...    arguments to be passed to/from other methods. For the default method these can 
       include further arguments (such as axes, asp and main) and graphical 
       parameters (see par) which are passed to plot.window(), title() and axis.

গ্রাফিকাল পরামিতিগুলির ডকুমেন্টেশনে (এর ডকুমেন্টেশন par) আমরা দেখতে পারি:

las
    numeric in {0,1,2,3}; the style of axis labels.

    0:
      always parallel to the axis [default],

    1:
      always horizontal,

    2:
      always perpendicular to the axis,

    3:
      always vertical.

    Also supported by mtext. Note that string/character rotation via argument srt to par does not affect the axis labels.

এ কারণেই উত্তীর্ণ হওয়াই las=2সঠিক উত্তর।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.