Ggplot- তে কীভাবে কিংবদন্তি শিরোনাম পরিবর্তন করতে হয়


299

আমার নীচের মত নীচের প্লট আছে। এটি এই আদেশ দ্বারা তৈরি করা হয়েছিল:

library(ggplot2)

df <- data.frame(cond = factor(rep(c("A", "B"), each = 200)), 
                 rating = c(rnorm(200), rnorm(200, mean=.8)))

ggplot(df, aes(x=rating, fill=cond)) + 
geom_density(alpha = .3) +
xlab("NEW RATING TITLE") +
ylab("NEW DENSITY TITLE")

এখন পরবর্তী জিনিস আমি কি করতে চান সংশোধন করতে হয় কিংবদন্তি শিরোনাম থেকে Cond মধ্যে নতুন LEGEND TITLE এর

সুতরাং আমি যা করেছি তা হ'ল উপরের কোডটির শেষেরটি যুক্ত করুন:

+labs(colour="NEW LEGEND TITLE")

কিন্তু এটি কাজ করে না। এটি করার সঠিক উপায় কী?

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


110
labs(fill="xyz")না করা উচিত
baptiste

1
@ ব্যাপটিস্ট আমি আপনার মন্তব্যে লক্ষ্য না করেই এই প্রশ্নটিতে অনেকবার ফিরে এসেছি, আপনি কি উত্তর হিসাবে লিখতে পারেন? আইএমও এটির সহজ সমাধান এবং কিছু স্বীকৃতির দাবিদার
ব্যবহারকারীর 632716

3
@ User632716 নীচের কেউ এর উত্তর ইতিমধ্যই থাকা
Baptiste

7
এটি কাজ করে না ...
শেংলিহ

1
একাধিক geom_বিবৃতি সহ প্লট জড়িত উত্তর সন্ধানকারীদের জন্য , আমি উত্তরটি stackoverflow.com/a/38485985/1169233 এ প্রস্তাব করছি , এটিই কেবল আমার পক্ষে কাজ করেছিল।
ওয়াল্ডির লিওনসিও

উত্তর:


347

এই কাজ করা উচিত:

p <- ggplot(df, aes(x=rating, fill=cond)) + 
           geom_density(alpha=.3) + 
           xlab("NEW RATING TITLE") + 
           ylab("NEW DENSITY TITLE")
p <- p + guides(fill=guide_legend(title="New Legend Title"))

(বা বিকল্পভাবে)

p + scale_fill_discrete(name = "New Legend Title")

10
আরেকটি বিকল্প নেইp$labels$fill <- "New Legend Title"
অ্যালেক্স হলকম্ব

3
গাইড এবং scale_fill_discrete মধ্যে পার্থক্য কি
মেধাত

18
p$labels$fillআমার জন্য কাজ করেনি। সঙ্গে ggplot2_2.1.0আমি ব্যবহারp$labels$colour <- "New legend title"
ClementWalter

4
p$labels$fill দুর্দান্ত তবে আপনি যদি এেসে নান্দনিক (লিনাইটাইপ, রঙ, আকৃতি) একাধিক পরিবর্তনশীল ব্যবহার করে থাকেন তবে আপনাকে আলাদা আলাদা আলাদা আলাদা আলাদা প্রতিটি পরিবর্তন করতে হবে।
ছাত্র

226

আমি এটিতে খুব বেশি খনন করি নি তবে আপনি ggplot () এ ফিল = কনড ব্যবহার করেছেন বলে ,

 + labs(color='NEW LEGEND TITLE') 

কাজ নাও করতে পারে। তবে এটি তোমাদের স্থলাভিষিক্ত রঙ দ্বারা ভরাট , এটা কাজ করে!

+ labs(fill='NEW LEGEND TITLE') 

এটি ggplot2_2.1.0 এ আমার জন্য কাজ করেছে


20
আমি মনে করি এটি সর্বাধিক স্ট্রাইগটওয়ারওয়ার্ড উত্তর, এটি ওপি বেশিরভাগ ক্ষেত্রে একটি অতিরিক্ত লাইন দিয়ে যা বলেছে ঠিক তা করে
লিও

3
উভয় রঙ = এবং পূরণ = কাজ করা উচিত। এটি প্রশ্নের সঠিক "উত্তর", আইএমও
ড্যান

3
ভরাট রঙের কাজ করবে কিনা "কনড" (বা অন্যান্য ক্ষেত্রে গ্রুপ) আসলে কী ম্যাপ করা হয়েছে তার উপর নির্ভর করে। একটি ভাল ব্যাখ্যা
কুকবুক- r.com/ গ্রাফস

3
এটি সেরা উত্তর।
অক্ষয় গৌর

1
দ্রষ্টব্য: ggplot2 3.0+ এ এই সমাধানটি কার্যকর হয়নি: এটি সমাধান করেছেনp + guides(fill=guide_legend(title="New Legend Title"))
সুমান্থ লাজারাস

39

যেহেতু আপনার দুটি ঘনত্ব রয়েছে আমি ধারণা করি আপনি নিজের রঙ সেট করতে চাইছেন scale_fill_manual

যদি তাই হয় তবে আপনি করতে পারেন:

df <- data.frame(x=1:10,group=c(rep("a",5),rep("b",5)))

legend_title <- "OMG My Title"

ggplot(df, aes(x=x, fill=group)) + geom_density(alpha=.3) +   
    scale_fill_manual(legend_title,values=c("orange","red"))

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


27

উপরের কোডগুলির কোনওটিই আমার পক্ষে কাজ করেনি।

আমি যা খুঁজে পেয়েছি এবং এটি কাজ করেছে তা এখানে।

labs(color = "sale year")

আপনি শিরোনাম এবং প্রদর্শনের মধ্যে একটি \nশেষে শেষে যোগ করেও দিতে পারেন ।

labs(color = 'sale year\n")


2
এটি এই উত্তর চেয়ে আলাদা কীভাবে ?
মার্ভ

3
হ্যাঁ, আমি উপরের প্রতিটি উদাহরণ চেষ্টা করেছি এবং এটিই আমার পক্ষে কাজ করেছে। ধন্যবাদ!
সামারেলা

এই পোস্টটির মূল পোস্ট প্রশ্নটি কীভাবে দেওয়া হবে, মনে fillহয় এর পরিবর্তে color(বা colour) দরকার হয়? প্রশ্নের সময় দেওয়া, এটি ggplot2সংস্করণ সম্পর্কিত হতে পারে।
স্টিভ

1
@merv মূল পার্থক্য হ'ল এটি আসলে কাজ করে।
লুস ডি সৌসা

16

যেহেতু আপনার ggplot(data, fill= cond)কোডটিতে আপনি হিস্টোগ্রাম তৈরি করেছিলেন আপনি লেবেল বিভাগে "ফিল" ব্যবহার করে কিংবদন্তির শিরোনাম যুক্ত করতে হবে +labs(fill="Title name")। আপনি যদি জিগ্ল্লট কোড (ডেটা, রঙ = কনড) যেখানে অন্য ধরণের প্লট ব্যবহার করে থাকেন তবে আপনি ব্যবহার করতে পারেন +labs(colour= "Title Name")। সংক্ষেপে, ল্যাব আর্গুমেন্ট aes যুক্তি মেলে।

আমি + guides(fill=guide_legend("my awesome title"))জিওম_বার প্লটগুলিতে কিংবদন্তি শিরোনামটি পরিবর্তন করেছি তবে এটি ভূ-পয়েন্টের জন্য কাজ করবে বলে মনে হয় না।


..., তবে এর জন্য geom_point(), এটি আমার পক্ষে কাজ করে:guides(color=guide_legend("Type:"))

1
@ কেএনবি, আপনার পদ্ধতিটি কাজ করে:guides(color=guide_legend("Score Ranking:"))
বিএমসি

1
এটি কীভাবে আলাদা যে এই উত্তর ?
মার্ভ

6

আরও একটি সহজ উত্তর রয়েছে যা কিছু সাধারণ গ্রাফের জন্য কাজ করতে পারে।

আপনার গ্রাফটিতে কেবল গাইড_লেগেন্ড () -তে একটি কল যুক্ত করুন।

ggplot(...) + ... + guide_legend(title="my awesome title")

যেমন খুব দুর্দান্ত জিগপ্ল্লট ডক্সে দেখানো হয়েছে ।

যদি এটি কাজ না করে, আপনি কলের সাথে আপনার গাইড প্যারামিটারগুলি আরও নিখুঁতভাবে সেট করতে পারেন গাইডের :

ggplot(...) + ... + guides(fill=guide_legend("my awesome title"))

আপনার কলটির জন্যও এই পরামিতিগুলি নির্দিষ্ট করে আপনি আকার / রঙ / আকারকে পৃথক করতে পারেন guides


26
এটি আমার পক্ষে কাজ করে না, তবে qplot(…) + guides(color=guide_legend(title="sale year"))কাজ করেছে
আরনাড এ

3

কেবলমাত্র তালিকায় যুক্ত করতে (এখানে অন্যান্য বিকল্পগুলি আমার পক্ষে কাজ করে না), আপনি ggplot- এর জন্য ফাংশন আপডেট_লবেলগুলিও ব্যবহার করতে পারেন:

p <- ggplot(df, aes(x=rating, fill=cond)) + 
           geom_density(alpha=.3) + 
           xlab("NEW RATING TITLE") + 
           ylab("NEW DENSITY TITLE")
update_labels(p, list(colour="MY NEW LEGEND TITLE")

এটি আপনাকে পৃথক রেখার সাহায্যে এক্স- এবং y- অক্ষ লেবেলগুলিও পরিবর্তন করতে দেয়:

update_labels(p, list(x="NEW X LABEL",y="NEW Y LABEL")

2

আমি লক্ষ্য করেছি যে ggboxplot () এর জন্য কিংবদন্তি পরিবর্তন করতে / নির্দিষ্ট করার দুটি উপায় রয়েছে:

library(ggpubr)

bxp.defaultLegend <- ggboxplot(ToothGrowth, x = "dose", y = "len",
                               color = "dose", palette = "jco")

# Solution 1, setup legend.title directly in ggboxplot()
bxp.legend <- ggboxplot(ToothGrowth, x = "dose", y = "len",
                 color = "dose", palette = "jco", legend.title="Dose (mg)")

# Solution 2: Change legend title and appearnace in ggboxplot() using labs() and theme() option:
plot1 <-  bxp.defaultLegend + labs(color = "Dose (mg)") +
  theme(legend.title = element_text(color = "blue", size = 10), legend.text = element_text(color = "red"))

ggarrange(list(bxp.legend, bxp.defaultLegend, plot1), nrow = 1, ncol = 3,  common.legend = TRUE)

কোডটি গিটহাবের উদাহরণের ভিত্তিতে পরিবর্তিত হয়েছে ।


1

আমি আমার জিজিপ্লটতে একটি ফেসপ্রেট ব্যবহার করছি এবং প্রস্তাবিত সমাধানগুলির মধ্যে আরনাউডার সমাধান ব্যতীত আমার পক্ষে আর কোনও কাজ হয়নি:

qplot() + guides(color=guide_legend(title="sale year")) 

1

লেবেল, কিংবদন্তি লেবেল, শিরোনাম এবং অক্ষের নাম পরিবর্তন করার জন্য অনেক লোক প্রচুর সময় ব্যয় করে কারণ তারা জানেন না যে আর-এ ফাঁকা স্থান রয়েছে এমন টেবিলগুলি লোড করা সম্ভব " "। তবে আপনি সময় বাঁচাতে বা আপনার কোডের আকার হ্রাস করতে এটি করতে পারেন, যখন আপনি কোনও টেবিল লোড করার সময় পৃথককারীদের নির্দিষ্ট করে (অথবা ডিফল্ট বা কোনও একক স্থানের চেয়ে অন্য কোনও বিভাজক):

read.table(sep = '\t')

অথবা সিএসভি ফর্ম্যাটের ডিফল্ট লোডিং পরামিতিগুলি ব্যবহার করে:

read.csv()

এর অর্থ হ'ল "NEW LEGEND TITLE"প্রতিটি প্লটে নতুন কিংবদন্তি শিরোনাম নির্দিষ্ট করা এড়াতে আপনি সরাসরি আপনার মূল ডেটা ফাইলটিতে কলামের নাম (শিরোনাম) হিসাবে রাখতে পারেন ।


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