আমি কীভাবে জিজিপ্লট 2 দিয়ে তৈরি প্লটের পটভূমির রঙ পরিবর্তন করব


101

ডিফল্টরূপে, ggplot2 ধূসর ব্যাকগ্রাউন্ড সহ প্লট উত্পাদন করে। আমি কীভাবে প্লটের পটভূমির রঙ পরিবর্তন করব?

উদাহরণস্বরূপ, নিম্নলিখিত কোড দ্বারা উত্পাদিত একটি প্লট:

library(ggplot2)
myplot<-ggplot(data=data.frame(a=c(1,2,3), b=c(2,3,4)), aes(x=a, y=b)) + geom_line()
myplot

উত্তর:


127

প্যানেলের পটভূমির রঙ পরিবর্তন করতে, নিম্নলিখিত কোডটি ব্যবহার করুন:

myplot + theme(panel.background = element_rect(fill = 'green', colour = 'red'))

প্লটের রঙ পরিবর্তন করতে (তবে প্যানেলের রঙ নয়), আপনি এটি করতে পারেন:

myplot + theme(plot.background = element_rect(fill = 'green', colour = 'red'))

আরও থিম বিশদের জন্য এখানে দেখুন কিংবদন্তী, অক্ষ এবং থিমগুলির জন্য দ্রুত রেফারেন্স শীট


40
এছাড়াও theme_bwএকটি সাদা ব্যাকগ্রাউন্ড এবং ধূসর গ্রিডলাইন দেয়। আমি এটি সর্বদা ব্যবহার করি, যেমন মুদ্রণ হিসাবে এটি ডিফল্ট ধূসর ব্যাকগ্রাউন্ডের চেয়ে অনেক ভাল দেখাচ্ছে:myplot + theme_bw()
ROLO

@ রোলো: দুর্দান্ত! ডিফল্টরূপে সমস্ত প্লটে এটি প্রয়োগ করার কোনও উপায় আছে কি?
krlMLr

11
ডিফল্ট বি ও ডাব্লু ডাব্লু জিপিপ্লটের জন্য এটি আপনার স্ক্রিপ্টের শুরুতে রাখুন: ggplot <- function(...) { ggplot2::ggplot(...) + theme_bw() }
রোলো

4
@ রলো যা এর নিজস্ব উত্তর প্রাপ্য, বিশেষত কারণ জ্যাকের উত্তর গ্রিড লাইনের রঙ পরিবর্তন করে না।
nnot101

7
নোট করুন optsএবং theme_rectggplot2 এর নতুন সংস্করণগুলিতে হ্রাস করা হয়েছে। (০.৯.৩) সুতরাং দ্বিতীয় কমান্ডের নতুন সংস্করণটি হয়ে উঠবে:myplot + theme(plot.background = element_rect(fill='green', colour='red'))
রাম নরসিমহান

50

অবহেলিত optsএবং theme_rectব্যবহার এড়াতে :

myplot + theme(panel.background = element_rect(fill='green', colour='red'))

থিম_ গ্রে এর উপর ভিত্তি করে আপনার নিজস্ব কাস্টম থিমটি সংজ্ঞায়িত করতে তবে আপনার কিছু পরিবর্তন এবং গ্রিডলাইন রঙ / আকার নিয়ন্ত্রণ ( ggplot2.org এ খেলতে উপলভ্য আরও বিকল্প ) সহ কয়েকটি যুক্ত অতিরিক্ত সহ :

theme_jack <- function (base_size = 12, base_family = "") {
    theme_gray(base_size = base_size, base_family = base_family) %+replace% 
        theme(
            axis.text = element_text(colour = "white"),
            axis.title.x = element_text(colour = "pink", size=rel(3)),
            axis.title.y = element_text(colour = "blue", angle=45),
            panel.background = element_rect(fill="green"),
            panel.grid.minor.y = element_line(size=3),
            panel.grid.major = element_line(colour = "orange"),
            plot.background = element_rect(fill="red")
    )   
}

ভবিষ্যতে যখন মাস্কিং ছাড়াই জিপিপ্লট ডাকা হয় তখন আপনার কাস্টম থিমটিকে ডিফল্ট করতে:

theme_set(theme_jack())

আপনি যদি বর্তমানে সেট করা থিমের একটি উপাদান পরিবর্তন করতে চান:

theme_update(plot.background = element_rect(fill="pink"), axis.title.x = element_text(colour = "red"))

বর্তমান ডিফল্ট থিমটি কোনও বস্তু হিসাবে সংরক্ষণ করতে:

theme_pink <- theme_get()

নোট যে theme_pinkএকটি তালিকা যেখানে theme_jackএকটি ফাংশন ছিল। সুতরাং থিম_জ্যাক ব্যবহার করে থিমটি ফিরিয়ে আনার জন্য থিম_পিংক ব্যবহারে theme_set(theme_jack())ফিরে আসুন theme_set(theme_pink)

আপনি প্রতিস্থাপন করতে পারেন theme_grayদ্বারা theme_bwসংজ্ঞা theme_jackযদি আপনি পছন্দ। আপনার কাস্টম থিমটি সাদৃশ্যযুক্ত theme_bwতবে সমস্ত গ্রিডলাইনগুলির সাথে (x, y, প্রধান এবং অপ্রধান) বন্ধ হয়ে গেছে:

theme_nogrid <- function (base_size = 12, base_family = "") {
    theme_bw(base_size = base_size, base_family = base_family) %+replace% 
        theme(
            panel.grid = element_blank()
    )   
}

অবশেষে আরো একটি ভিত্তিগত দরকারী থিম যখন ষড়যন্ত্র choropleths বা ggplot অন্যান্য মানচিত্র, আলোচনা উপর ভিত্তি করে এখানে কিন্তু এড়ানোর থামিয়ে দেওয়া আপডেট করা হয়েছে। এখানে উদ্দেশ্যটি হল ধূসর ব্যাকগ্রাউন্ড এবং অন্য কোনও বৈশিষ্ট্য যা মানচিত্র থেকে বিভ্রান্ত হতে পারে সেগুলি সরিয়ে ফেলা।

theme_map <- function (base_size = 12, base_family = "") {
    theme_gray(base_size = base_size, base_family = base_family) %+replace% 
        theme(
            axis.line=element_blank(),
            axis.text.x=element_blank(),
            axis.text.y=element_blank(),
            axis.ticks=element_blank(),
            axis.ticks.length=unit(0.3, "lines"),
            axis.ticks.margin=unit(0.5, "lines"),
            axis.title.x=element_blank(),
            axis.title.y=element_blank(),
            legend.background=element_rect(fill="white", colour=NA),
            legend.key=element_rect(colour="white"),
            legend.key.size=unit(1.2, "lines"),
            legend.position="right",
            legend.text=element_text(size=rel(0.8)),
            legend.title=element_text(size=rel(0.8), face="bold", hjust=0),
            panel.background=element_blank(),
            panel.border=element_blank(),
            panel.grid.major=element_blank(),
            panel.grid.minor=element_blank(),
            panel.margin=unit(0, "lines"),
            plot.background=element_blank(),
            plot.margin=unit(c(1, 1, 0.5, 0.5), "lines"),
            plot.title=element_text(size=rel(1.2)),
            strip.background=element_rect(fill="grey90", colour="grey50"),
            strip.text.x=element_text(size=rel(0.8)),
            strip.text.y=element_text(size=rel(0.8), angle=-90) 
        )   
}

4
ধন্যবাদ এটি খুব সহায়ক। এফওয়াইআই, আমি খুঁজে পেয়েছি যে যুক্তিটি plot.backgroundঅবশ্যই পাস করতে হবে theme। অন্যান্য যুক্তি alচ্ছিক।
রেডিং ট্যাডপোল

1

Ggplot2 ব্যাকগ্রাউন্ডকে সাদা করার জন্য এখানে একটি কাস্টম থিম এবং প্রকাশনা এবং পোস্টারগুলির জন্য বেশ ভাল অন্যান্য পরিবর্তন রয়েছে unch কেবলমাত্র + মাইথিমের উপর নজর রাখুন। যদি আপনি + মাইথিমের পরে + থিম অনুসারে বিকল্পগুলি যুক্ত করতে বা পরিবর্তন করতে চান তবে এটি + মাইথিম থেকে এই বিকল্পগুলি প্রতিস্থাপন করবে।

library(ggplot2)
library(cowplot)
theme_set(theme_cowplot())

mytheme = list(
    theme_classic()+
        theme(panel.background = element_blank(),strip.background = element_rect(colour=NA, fill=NA),panel.border = element_rect(fill = NA, color = "black"),
              legend.title = element_blank(),legend.position="bottom", strip.text = element_text(face="bold", size=9),
              axis.text=element_text(face="bold"),axis.title = element_text(face="bold"),plot.title = element_text(face = "bold", hjust = 0.5,size=13))
)

ggplot(data=data.frame(a=c(1,2,3), b=c(2,3,4)), aes(x=a, y=b)) + mytheme + geom_line()

কাস্টম ggplot থিম

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