Ggplot2 এ রঙগুলি পূরণ করতে কীভাবে টেক্সচার যুক্ত করবেন


104

আমি বর্তমানে ফিলিংয়ের scale_brewer()জন্য ব্যবহার করছি এবং এগুলি রঙে সুন্দর দেখাচ্ছে (স্ক্রিনে এবং রঙিন প্রিন্টারের মাধ্যমে) তবে একটি কালো এবং সাদা প্রিন্টার ব্যবহারের সময় গ্রে হিসাবে তুলনামূলকভাবে প্রিন্ট করুন। আমি অনলাইন ggplot2ডকুমেন্টেশন অনুসন্ধান করেছিলাম তবে রঙগুলি পূরণ করার জন্য টেক্সচার যুক্ত করার কিছুই দেখিনি। এটি করার কোনও আনুষ্ঠানিক ggplot2উপায় আছে বা কারও কাছে হ্যাক রয়েছে যা তারা ব্যবহার করে? টেক্সচারের সাহায্যে আমি বোঝাই জিনিসগুলি যেমন তির্যক বার, বিপরীত ডায়াগোনাল বার, ডট প্যাটার্ন, ইত্যাদি যা কালো এবং সাদা মুদ্রিত হলে ভরাট রঙকে আলাদা করতে পারে।


উত্তর:


34

ggplot রঙিন রঙের প্যালেট ব্যবহার করতে পারে। এর মধ্যে কয়েকটি "ফটোকপি" বান্ধব। তাহলে মাবে কি এমন কিছু কাজ করবে আপনার?

ggplot(diamonds, aes(x=cut, y=price, group=cut))+
geom_boxplot(aes(fill=cut))+scale_fill_brewer(palette="OrRd")

এই ক্ষেত্রে অরআরডি হ'ল একটি রঙিন প্যালেট যা রঙিনউইজার ওয়েবপৃষ্ঠায় পাওয়া যায়: http://colorbrewer2.org/

ফটোকপি বন্ধুত্বপূর্ণ: এটি নির্দেশ করে যে একটি প্রদত্ত রঙের স্কিম কালো এবং সাদা ফটোকপি সহ্য করবে। বিচ্যুতি স্কিমগুলি সফলভাবে ফটোকপি করা যায় না। স্বল্পতার মধ্যে পার্থক্যগুলি অনুক্রমিক স্কিমগুলির সাথে সংরক্ষণ করা উচিত।


25
ওপির প্রশ্নের উত্তর দেয় না। আমি এখানে এসেছি কারণ আমি নির্দিষ্ট রঙে আটকে রয়েছি। এই গৃহীত 'উত্তর' কীভাবে টেক্সচার প্রয়োগ করতে হবে তা বোঝায় না।
এমএস বেরেন্ডস 25'19

4
@ এমএসব্রেন্ডস এটি আপনার প্রশ্নের উত্তর দেয় না । খুব নিশ্চিত যে সবুজ চেক চিহ্নটি এমন একটি চিহ্ন যা এটি প্রশ্নের উত্তর দিয়েছে!
ইয়ান ফটো

11
একটি চেক চিহ্ন দ্বারা বোকা বোকা না। প্রশ্নটি কীভাবে টেক্সচার প্রয়োগ করা যায় - এবং এর উত্তর দেওয়া হয়নি। বাক্সের বাইরের একটি ধারণা সরবরাহ করা হয়েছিল, হ্যাঁ, তবে প্রশ্নের উত্তর নয়।
এমএস বেরেন্ডস

84

ওহে লোকেরা এখানে একটি উইক হ্যাক যা টেক্সচার ইস্যুটিকে খুব বেসিক ফ্যাশনে সম্বোধন করে:

ggplot2: আর ব্যবহার করে অন্যদের চেয়ে এক বারের সীমানাকে আরও গাer় করুন

সম্পাদনা: অবশেষে আমি এই হ্যাকটির একটি সংক্ষিপ্ত উদাহরণ দেওয়ার জন্য সময় পেয়েছি যা ggplot2 এ কমপক্ষে 3 ধরণের বেসিক প্যাটার্নের অনুমতি দেয়। কোড:

Example.Data<- data.frame(matrix(vector(), 0, 3, dimnames=list(c(), c("Value", "Variable", "Fill"))), stringsAsFactors=F)

Example.Data[1, ] <- c(45, 'Horizontal Pattern','Horizontal Pattern' )
Example.Data[2, ] <- c(65, 'Vertical Pattern','Vertical Pattern' )
Example.Data[3, ] <- c(89, 'Mesh Pattern','Mesh Pattern' )


HighlightDataVert<-Example.Data[2, ]
HighlightHorizontal<-Example.Data[1, ]
HighlightMesh<-Example.Data[3, ]
HighlightHorizontal$Value<-as.numeric(HighlightHorizontal$Value)
Example.Data$Value<-as.numeric(Example.Data$Value)

HighlightDataVert$Value<-as.numeric(HighlightDataVert$Value)
HighlightMesh$Value<-as.numeric(HighlightMesh$Value)
HighlightHorizontal$Value<-HighlightHorizontal$Value-5
HighlightHorizontal2<-HighlightHorizontal
HighlightHorizontal2$Value<-HighlightHorizontal$Value-5
HighlightHorizontal3<-HighlightHorizontal2
HighlightHorizontal3$Value<-HighlightHorizontal2$Value-5
HighlightHorizontal4<-HighlightHorizontal3
HighlightHorizontal4$Value<-HighlightHorizontal3$Value-5
HighlightHorizontal5<-HighlightHorizontal4
HighlightHorizontal5$Value<-HighlightHorizontal4$Value-5
HighlightHorizontal6<-HighlightHorizontal5
HighlightHorizontal6$Value<-HighlightHorizontal5$Value-5
HighlightHorizontal7<-HighlightHorizontal6
HighlightHorizontal7$Value<-HighlightHorizontal6$Value-5
HighlightHorizontal8<-HighlightHorizontal7
HighlightHorizontal8$Value<-HighlightHorizontal7$Value-5

HighlightMeshHoriz<-HighlightMesh
HighlightMeshHoriz$Value<-HighlightMeshHoriz$Value-5
HighlightMeshHoriz2<-HighlightMeshHoriz
HighlightMeshHoriz2$Value<-HighlightMeshHoriz2$Value-5
HighlightMeshHoriz3<-HighlightMeshHoriz2
HighlightMeshHoriz3$Value<-HighlightMeshHoriz3$Value-5
HighlightMeshHoriz4<-HighlightMeshHoriz3
HighlightMeshHoriz4$Value<-HighlightMeshHoriz4$Value-5
HighlightMeshHoriz5<-HighlightMeshHoriz4
HighlightMeshHoriz5$Value<-HighlightMeshHoriz5$Value-5
HighlightMeshHoriz6<-HighlightMeshHoriz5
HighlightMeshHoriz6$Value<-HighlightMeshHoriz6$Value-5
HighlightMeshHoriz7<-HighlightMeshHoriz6
HighlightMeshHoriz7$Value<-HighlightMeshHoriz7$Value-5
HighlightMeshHoriz8<-HighlightMeshHoriz7
HighlightMeshHoriz8$Value<-HighlightMeshHoriz8$Value-5
HighlightMeshHoriz9<-HighlightMeshHoriz8
HighlightMeshHoriz9$Value<-HighlightMeshHoriz9$Value-5
HighlightMeshHoriz10<-HighlightMeshHoriz9
HighlightMeshHoriz10$Value<-HighlightMeshHoriz10$Value-5
HighlightMeshHoriz11<-HighlightMeshHoriz10
HighlightMeshHoriz11$Value<-HighlightMeshHoriz11$Value-5
HighlightMeshHoriz12<-HighlightMeshHoriz11
HighlightMeshHoriz12$Value<-HighlightMeshHoriz12$Value-5
HighlightMeshHoriz13<-HighlightMeshHoriz12
HighlightMeshHoriz13$Value<-HighlightMeshHoriz13$Value-5
HighlightMeshHoriz14<-HighlightMeshHoriz13
HighlightMeshHoriz14$Value<-HighlightMeshHoriz14$Value-5
HighlightMeshHoriz15<-HighlightMeshHoriz14
HighlightMeshHoriz15$Value<-HighlightMeshHoriz15$Value-5
HighlightMeshHoriz16<-HighlightMeshHoriz15
HighlightMeshHoriz16$Value<-HighlightMeshHoriz16$Value-5
HighlightMeshHoriz17<-HighlightMeshHoriz16
HighlightMeshHoriz17$Value<-HighlightMeshHoriz17$Value-5

ggplot(Example.Data, aes(x=Variable, y=Value, fill=Fill)) + theme_bw() + #facet_wrap(~Product, nrow=1)+ #Ensure theme_bw are there to create borders
  theme(legend.position = "none")+
  scale_fill_grey(start=.4)+
  #scale_y_continuous(limits = c(0, 100), breaks = (seq(0,100,by = 10)))+
  geom_bar(position=position_dodge(.9), stat="identity", colour="black", legend = FALSE)+
  geom_bar(data=HighlightDataVert, position=position_dodge(.9), stat="identity", colour="black", size=.5, width=0.80)+
geom_bar(data=HighlightDataVert, position=position_dodge(.9), stat="identity", colour="black", size=.5, width=0.60)+  
  geom_bar(data=HighlightDataVert, position=position_dodge(.9), stat="identity", colour="black", size=.5, width=0.40)+
  geom_bar(data=HighlightDataVert, position=position_dodge(.9), stat="identity", colour="black", size=.5, width=0.20)+
  geom_bar(data=HighlightDataVert, position=position_dodge(.9), stat="identity", colour="black", size=.5, width=0.0) +
  geom_bar(data=HighlightHorizontal, position=position_dodge(.9), stat="identity", colour="black", size=.5)+
  geom_bar(data=HighlightHorizontal2, position=position_dodge(.9), stat="identity", colour="black", size=.5)+
  geom_bar(data=HighlightHorizontal3, position=position_dodge(.9), stat="identity", colour="black", size=.5)+
  geom_bar(data=HighlightHorizontal4, position=position_dodge(.9), stat="identity", colour="black", size=.5)+
  geom_bar(data=HighlightHorizontal5, position=position_dodge(.9), stat="identity", colour="black", size=.5)+
  geom_bar(data=HighlightHorizontal6, position=position_dodge(.9), stat="identity", colour="black", size=.5)+
  geom_bar(data=HighlightHorizontal7, position=position_dodge(.9), stat="identity", colour="black", size=.5)+
  geom_bar(data=HighlightHorizontal8, position=position_dodge(.9), stat="identity", colour="black", size=.5)+
  geom_bar(data=HighlightMesh, position=position_dodge(.9), stat="identity", colour="black", size=.5, width=0.80)+
 geom_bar(data=HighlightMesh, position=position_dodge(.9), stat="identity", colour="black", size=.5, width=0.60)+
  geom_bar(data=HighlightMesh, position=position_dodge(.9), stat="identity", colour="black", size=.5, width=0.40)+
  geom_bar(data=HighlightMesh, position=position_dodge(.9), stat="identity", colour="black", size=.5, width=0.20)+
  geom_bar(data=HighlightMesh, position=position_dodge(.9), stat="identity", colour="black", size=.5, width=0.0)+
  geom_bar(data=HighlightMeshHoriz, position=position_dodge(.9), stat="identity", colour="black", size=.5, fill = "transparent")+
geom_bar(data=HighlightMeshHoriz2, position=position_dodge(.9), stat="identity", colour="black", size=.5, fill = "transparent")+
  geom_bar(data=HighlightMeshHoriz3, position=position_dodge(.9), stat="identity", colour="black", size=.5, fill = "transparent")+
  geom_bar(data=HighlightMeshHoriz4, position=position_dodge(.9), stat="identity", colour="black", size=.5, fill = "transparent")+
  geom_bar(data=HighlightMeshHoriz5, position=position_dodge(.9), stat="identity", colour="black", size=.5, fill = "transparent")+
  geom_bar(data=HighlightMeshHoriz6, position=position_dodge(.9), stat="identity", colour="black", size=.5, fill = "transparent")+
  geom_bar(data=HighlightMeshHoriz7, position=position_dodge(.9), stat="identity", colour="black", size=.5, fill = "transparent")+
  geom_bar(data=HighlightMeshHoriz8, position=position_dodge(.9), stat="identity", colour="black", size=.5, fill = "transparent")+
  geom_bar(data=HighlightMeshHoriz9, position=position_dodge(.9), stat="identity", colour="black", size=.5, fill = "transparent")+
  geom_bar(data=HighlightMeshHoriz10, position=position_dodge(.9), stat="identity", colour="black", size=.5, fill = "transparent")+
  geom_bar(data=HighlightMeshHoriz11, position=position_dodge(.9), stat="identity", colour="black", size=.5, fill = "transparent")+
  geom_bar(data=HighlightMeshHoriz12, position=position_dodge(.9), stat="identity", colour="black", size=.5, fill = "transparent")+
  geom_bar(data=HighlightMeshHoriz13, position=position_dodge(.9), stat="identity", colour="black", size=.5, fill = "transparent")+
  geom_bar(data=HighlightMeshHoriz14, position=position_dodge(.9), stat="identity", colour="black", size=.5, fill = "transparent")+
  geom_bar(data=HighlightMeshHoriz15, position=position_dodge(.9), stat="identity", colour="black", size=.5, fill = "transparent")+
  geom_bar(data=HighlightMeshHoriz16, position=position_dodge(.9), stat="identity", colour="black", size=.5, fill = "transparent")+
  geom_bar(data=HighlightMeshHoriz17, position=position_dodge(.9), stat="identity", colour="black", size=.5, fill = "transparent")

এটি উত্পাদন করে:

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

এটি দুর্দান্ত সুন্দর নয় তবে এটিই আমি সমাধান করতে চাই solution

হিসাবে দেখা যায় আমি কিছু খুব বেসিক ডেটা উত্পাদন। উল্লম্ব রেখাগুলি পেতে আমি ভেরিয়েবলটি ধারণ করতে কেবল একটি ডেটা ফ্রেম তৈরি করি যা আমি উল্লম্ব লাইনগুলিতে যুক্ত করতে চেয়েছিলাম এবং প্রতিবার প্রস্থকে হ্রাস করে একাধিকবার গ্রাফের সীমানাগুলি পুনরায় আঁকতে চেয়েছিলাম।

আনুভূমিক রেখাগুলির জন্য একই রকম কাজ করা হয় তবে প্রতিটি পুনরায় আঁকার জন্য একটি নতুন ডেটা ফ্রেম দরকার যেখানে আমি আগ্রহের পরিবর্তনশীলের সাথে সম্পর্কিত মান থেকে আমার মান (আমার উদাহরণ '5') বিয়োগ করেছি। কার্যকরভাবে বারের উচ্চতা হ্রাস করা। এটি অর্জন করা শক্ত এবং এটি আরও প্রবাহিত পদ্ধতির হতে পারে তবে এটি কীভাবে অর্জন করা যায় তা চিত্রিত করে।

জাল প্যাটার্ন উভয়ের সংমিশ্রণ। প্রথমে উল্লম্ব লাইনগুলি আঁকুন এবং তারপরে অনুভূমিক রেখাগুলি সেটিং fillহিসাবে যুক্ত করুনfill='transparent' নিশ্চিত করার উল্লম্ব লাইন ধরে টানা নেই।

কোনও প্যাটার্ন আপডেট না হওয়া পর্যন্ত আমি আশা করি আপনারা কেউ কেউ এটিকে দরকারী বলে মনে করছেন।

সম্পাদনা 2:

অতিরিক্ত তির্যক নিদর্শন যুক্ত করা যেতে পারে। আমি ডেটা ফ্রেমে একটি অতিরিক্ত ভেরিয়েবল যুক্ত করেছি:

Example.Data[4,] <- c(20, 'Diagonal Pattern','Diagonal Pattern' )

তারপরে আমি তির্যক রেখার জন্য স্থানাঙ্ক রাখতে একটি নতুন ডেটা ফ্রেম তৈরি করেছি:

Diag <- data.frame(
  x = c(1,1,1.45,1.45), # 1st 2 values dictate starting point of line. 2nd 2 dictate width. Each whole = one background grid
  y = c(0,0,20,20),
  x2 = c(1.2,1.2,1.45,1.45), # 1st 2 values dictate starting point of line. 2nd 2 dictate width. Each whole = one background grid
  y2 = c(0,0,11.5,11.5),# inner 2 values dictate height of horizontal line. Outer: vertical edge lines.
  x3 = c(1.38,1.38,1.45,1.45), # 1st 2 values dictate starting point of line. 2nd 2 dictate width. Each whole = one background grid
  y3 = c(0,0,3.5,3.5),# inner 2 values dictate height of horizontal line. Outer: vertical edge lines.
  x4 = c(.8,.8,1.26,1.26), # 1st 2 values dictate starting point of line. 2nd 2 dictate width. Each whole = one background grid
  y4 = c(0,0,20,20),# inner 2 values dictate height of horizontal line. Outer: vertical edge lines.
  x5 = c(.6,.6,1.07,1.07), # 1st 2 values dictate starting point of line. 2nd 2 dictate width. Each whole = one background grid
  y5 = c(0,0,20,20),# inner 2 values dictate height of horizontal line. Outer: vertical edge lines.
  x6 = c(.555,.555,.88,.88), # 1st 2 values dictate starting point of line. 2nd 2 dictate width. Each whole = one background grid
  y6 = c(6,6,20,20),# inner 2 values dictate height of horizontal line. Outer: vertical edge lines.
  x7 = c(.555,.555,.72,.72), # 1st 2 values dictate starting point of line. 2nd 2 dictate width. Each whole = one background grid
  y7 = c(13,13,20,20),# inner 2 values dictate height of horizontal line. Outer: vertical edge lines.
  x8 = c(.8,.8,1.26,1.26), # 1st 2 values dictate starting point of line. 2nd 2 dictate width. Each whole = one background grid
  y8 = c(0,0,20,20),# inner 2 values dictate height of horizontal line. Outer: vertical edge lines.
  #Variable = "Diagonal Pattern",
  Fill = "Diagonal Pattern"
  )

সেখান থেকে আমি উপরের জিগ্ল্লটতে জিওমপ্যাথগুলি যুক্ত করেছি যার সাথে প্রত্যেকে আলাদা আলাদা স্থানাঙ্ক কল করে কাঙ্ক্ষিত বারের উপর দিয়ে রেখাগুলি আঁকছি:

+geom_path(data=Diag, aes(x=x, y=y),colour = "black")+  # calls co-or for sig. line & draws
  geom_path(data=Diag, aes(x=x2, y=y2),colour = "black")+  # calls co-or for sig. line & draws
  geom_path(data=Diag, aes(x=x3, y=y3),colour = "black")+
  geom_path(data=Diag, aes(x=x4, y=y4),colour = "black")+
  geom_path(data=Diag, aes(x=x5, y=y5),colour = "black")+
  geom_path(data=Diag, aes(x=x6, y=y6),colour = "black")+
  geom_path(data=Diag, aes(x=x7, y=y7),colour = "black")

এটি নিম্নলিখিত ফলাফল:

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

লাইনগুলি পুরোপুরি কোণঠাসা করে এবং ফাঁক করে ফেলার ক্ষেত্রে আমি খুব বেশি সময় ব্যয় করিনি কারণ এটি কিছুটা opালু but তবে এটি ধারণার প্রমাণ হিসাবে কাজ করা উচিত।

স্পষ্টতই রেখাগুলি বিপরীত দিকে ঝুঁকতে পারে এবং ত্রিভুজ এবং উল্লম্ব জাল করার মতো তির্যক জাল করার জন্যও জায়গা রয়েছে।

আমি মনে করি প্যাটার্ন ফ্রন্টে আমি যা দিতে পারি সে সম্পর্কেই এটি। আশা করি কেউ এর ব্যবহার খুঁজে পেতে পারেন।

সম্পাদনা 3: বিখ্যাত শেষ শব্দ। আমি অন্য একটি প্যাটার্ন বিকল্প নিয়ে এসেছি। এবার ব্যবহার করছি geom_jitter

আবার আমি ডেটা ফ্রেমে আরও একটি পরিবর্তনশীল যুক্ত করেছি:

Example.Data[5,] <- c(100, 'Bubble Pattern','Bubble Pattern' )

এবং আমি আদেশ করেছি যে আমি কীভাবে প্রতিটি প্যাটার্ন উপস্থাপন করতে চেয়েছি:

Example.Data$Variable = Relevel(Example.Data$Variable, ref = c("Diagonal Pattern", "Bubble Pattern","Horizontal Pattern","Mesh Pattern","Vertical Pattern"))

এরপরে আমি এক্স-অক্ষের উদ্দেশ্যে টার্গেট বারের সাথে সংযুক্ত নম্বরটি যুক্ত করতে একটি কলাম তৈরি করেছি:

Example.Data$Bubbles <- 2

'বুদবুদ' এর y- অক্ষের অবস্থানগুলি ধারণ করতে কলামগুলি অনুসরণ করেছে:

Example.Data$Points <- c(5, 10, 15, 20, 25)
Example.Data$Points2 <- c(30, 35, 40, 45, 50)
Example.Data$Points3 <- c(55, 60, 65, 70, 75)
Example.Data$Points4 <- c(80, 85, 90, 95, 7)
Example.Data$Points5 <- c(14, 21, 28, 35, 42)
Example.Data$Points6 <- c(49, 56, 63, 71, 78)
Example.Data$Points7 <- c(84, 91, 98, 6, 12)

অবশেষে আমি geom_jitterউপরের জিগ্ল্লটতে পজিশনের জন্য নতুন কলামগুলি ব্যবহার করে এবং 'বুদবুদ' এর আকার পরিবর্তনের জন্য 'পয়েন্টস' পুনরায় ব্যবহার করার জন্য যুক্ত করেছি:

+geom_jitter(data=Example.Data,aes(x=Bubbles, y=Points, size=Points), alpha=.5)+
  geom_jitter(data=Example.Data,aes(x=Bubbles, y=Points2, size=Points), alpha=.5)+
  geom_jitter(data=Example.Data,aes(x=Bubbles, y=Points, size=Points), alpha=.5)+
  geom_jitter(data=Example.Data,aes(x=Bubbles, y=Points2, size=Points), alpha=.5)+
  geom_jitter(data=Example.Data,aes(x=Bubbles, y=Points3, size=Points), alpha=.5)+
  geom_jitter(data=Example.Data,aes(x=Bubbles, y=Points4, size=Points), alpha=.5)+
  geom_jitter(data=Example.Data,aes(x=Bubbles, y=Points, size=Points), alpha=.5)+
  geom_jitter(data=Example.Data,aes(x=Bubbles, y=Points2, size=Points), alpha=.5)+
  geom_jitter(data=Example.Data,aes(x=Bubbles, y=Points, size=Points), alpha=.5)+
  geom_jitter(data=Example.Data,aes(x=Bubbles, y=Points2, size=Points), alpha=.5)+
  geom_jitter(data=Example.Data,aes(x=Bubbles, y=Points3, size=Points), alpha=.5)+
  geom_jitter(data=Example.Data,aes(x=Bubbles, y=Points4, size=Points), alpha=.5)+
  geom_jitter(data=Example.Data,aes(x=Bubbles, y=Points2, size=Points), alpha=.5)+
  geom_jitter(data=Example.Data,aes(x=Bubbles, y=Points5, size=Points), alpha=.5)+
  geom_jitter(data=Example.Data,aes(x=Bubbles, y=Points5, size=Points), alpha=.5)+
  geom_jitter(data=Example.Data,aes(x=Bubbles, y=Points6, size=Points), alpha=.5)+
  geom_jitter(data=Example.Data,aes(x=Bubbles, y=Points6, size=Points), alpha=.5)+
  geom_jitter(data=Example.Data,aes(x=Bubbles, y=Points7, size=Points), alpha=.5)+
  geom_jitter(data=Example.Data,aes(x=Bubbles, y=Points7, size=Points), alpha=.5)+
  geom_jitter(data=Example.Data,aes(x=Bubbles, y=Points, size=Points), alpha=.5)+
  geom_jitter(data=Example.Data,aes(x=Bubbles, y=Points2, size=Points), alpha=.5)+
  geom_jitter(data=Example.Data,aes(x=Bubbles, y=Points, size=Points), alpha=.5)+
  geom_jitter(data=Example.Data,aes(x=Bubbles, y=Points2, size=Points), alpha=.5)+
  geom_jitter(data=Example.Data,aes(x=Bubbles, y=Points3, size=Points), alpha=.5)+
  geom_jitter(data=Example.Data,aes(x=Bubbles, y=Points4, size=Points), alpha=.5)+
  geom_jitter(data=Example.Data,aes(x=Bubbles, y=Points, size=Points), alpha=.5)+
  geom_jitter(data=Example.Data,aes(x=Bubbles, y=Points2, size=Points), alpha=.5)+
  geom_jitter(data=Example.Data,aes(x=Bubbles, y=Points, size=Points), alpha=.5)+
  geom_jitter(data=Example.Data,aes(x=Bubbles, y=Points2, size=Points), alpha=.5)+
  geom_jitter(data=Example.Data,aes(x=Bubbles, y=Points3, size=Points), alpha=.5)+
  geom_jitter(data=Example.Data,aes(x=Bubbles, y=Points4, size=Points), alpha=.5)+
  geom_jitter(data=Example.Data,aes(x=Bubbles, y=Points2, size=Points), alpha=.5)+
  geom_jitter(data=Example.Data,aes(x=Bubbles, y=Points5, size=Points), alpha=.5)+
  geom_jitter(data=Example.Data,aes(x=Bubbles, y=Points5, size=Points), alpha=.5)+
  geom_jitter(data=Example.Data,aes(x=Bubbles, y=Points6, size=Points), alpha=.5)+
  geom_jitter(data=Example.Data,aes(x=Bubbles, y=Points6, size=Points), alpha=.5)+
  geom_jitter(data=Example.Data,aes(x=Bubbles, y=Points7, size=Points), alpha=.5)+
  geom_jitter(data=Example.Data,aes(x=Bubbles, y=Points7, size=Points), alpha=.5)

প্রতিবার প্লটটি জ্বলজ্বলে সঞ্চালিত হওয়ার সাথে সাথে 'বুদবুদগুলি' আলাদাভাবে রাখে তবে এখানে আমার সবচেয়ে ভাল ফলাফল রয়েছে:

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

কখনও কখনও 'বুদবুদ' সীমানার বাইরে ঝাঁকুনি দেয়। যদি এটি ঘটে আবার পুনরায় চালিত হয় বা কেবল বৃহত্তর মাত্রায় রফতানি হয়। ওয়াই-অক্ষের প্রতিটি বর্ধনের জন্য আরও বুদবুদ প্লট করা যেতে পারে যা আপনার ইচ্ছা হলে খালি জায়গাটি আরও পূরণ করবে।

এটি patterns টি নিদর্শন তৈরি করে (যদি আপনি বিপরীত ঝুঁকির তির্যক রেখা এবং উভয়ের তির্যক জাল অন্তর্ভুক্ত করেন) যা জিগ্ল্লটে হ্যাক হতে পারে।

কেউ যদি কিছু সম্পর্কে চিন্তা করতে পারে তবে দয়া করে আরও নির্দ্বিধায় পরামর্শ দিন।

সম্পাদনা 4: আমি জিপিপ্লট 2 এ হ্যাচিং / প্যাটার্নগুলি স্বয়ংক্রিয় করতে একটি মোড়ক ফাংশনে কাজ করছি। ফেসবুকে_গ্রিড প্লট ইত্যাদিতে নিদর্শনগুলির অনুমতি দেওয়ার জন্য ফাংশনটি প্রসারিত করার পরে আমি একটি লিঙ্ক পোস্ট করব Here উদাহরণস্বরূপ বারগুলির সাধারণ প্লটের জন্য ফাংশন ইনপুট সহ এখানে একটি আউটপুট দেওয়া হয়েছে:

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

ভাগ করার জন্য ফাংশন প্রস্তুত হয়ে গেলে আমি একটি শেষ সম্পাদনা যুক্ত করব।

5 সম্পাদনা করুন: জিগ_বার প্লটগুলিতে প্যাটার্নগুলি যুক্ত করার প্রক্রিয়াটি আরও সহজ করার জন্য আমি লিখেছি ফাংশন ডিমের একটি লিঙ্ক


সাবাশ! তবে, মনে হচ্ছে এই সমাধানটি কেবলমাত্র বার প্লটের জন্যই কাজ করে বা?
SkyWalker

@ জিওভান্নি আজুয়া আমি কেবল বার-প্লটের জন্য হ্যাঁ চেষ্টা করেছি। যখন আমি সময় পাই আমি স্ট্যাকড প্লট ইত্যাদির জন্য লিঙ্কযুক্ত ফাংশনটি চেষ্টা করব এবং গ্রহণ করব
ডককনকোট

71

বর্তমানে এটি সম্ভব নয় কারণ গ্রিড (গ্রাফিক্স সিস্টেম যা ggplot2 আসল অঙ্কন করতে ব্যবহার করে) টেক্সচার সমর্থন করে না। দুঃখিত!


70
এই কার্যকারিতাটি পাওয়ার জন্য গ্রিডেক্সট্রাকে নির্ভরতা হিসাবে যুক্ত করার কোনও পরিকল্পনা?
রাসেলপিয়ার্স

এ সম্পর্কে কোন খবর?
হ্রেন্ট

4
এটি এত দূরবর্তী ভবিষ্যতে পরিবর্তন হতে পারে। দেখুন এই আলোচনা উপর বিল্ডিং, আর এর গ্রিড প্যাকেজে আসন্ন পরিবর্তন
স্ট্রাগু

22

টেক্সচার্ড আয়তক্ষেত্রগুলি এবং বারগুলি আঁকতে আপনি @ ক্লাউস উইলক দ্বারা ggtextures প্যাকেজটি ব্যবহার করতে পারেন ।ggplot2

# Image/pattern randomly selected from README
path_image <- "http://www.hypergridbusiness.com/wp-content/uploads/2012/12/rocks2-256.jpg"

library(ggplot2)
# devtools::install_github("clauswilke/ggtextures")
ggplot(mtcars, aes(cyl, mpg)) + 
  ggtextures::geom_textured_bar(stat = "identity", image = path_image)

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

আপনি অন্যান্য রত্নগুলির সাথে এটিও একত্রিত করতে পারেন:

data_raw <- data.frame(x = round(rbinom(1000, 50, 0.1)))
ggplot(data_raw, aes(x)) +
  geom_textured_bar(
    aes(y = ..prop..), image = path_image
  ) +
  geom_density()

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


4
আপনার উত্তর @ পোগিবাস সরানোর জন্য ধন্যবাদ। আমি বাজি ধরছি এটি এখানে আরও বেশি (ভালভাবে যোগ্য) মনোযোগ পাবে! চিয়ার্স
হেনরিক

খুব সুন্দর সমাধান।
ডকনকোকট

4
ডাউনলোডযোগ্য নিদর্শনগুলি এখানে দেখুন: heropatterns.com
নোভা

এখন আমি কীভাবে আর .. তে তাদের স্বচ্ছতা পরিবর্তন করতে হবে তা জানতে হবে
নোভা

4

আমি সবেমাত্র ggpattern( https://github.com/coolbutuseless/ggpattern) নামে একটি প্যাকেজ আবিষ্কার করেছি ) যা এই সমস্যার দুর্দান্ত সমাধান বলে মনে হয় এবং ggplot2 কর্মপ্রবাহের সাথে সুন্দরভাবে সংহত করে। টেক্সচার ব্যবহার করে সমাধানগুলি তির্যক বারগুলির জন্য সূক্ষ্মভাবে কাজ করতে পারে তবে তারা ভেক্টর গ্রাফিক্স তৈরি করতে পারে না এবং তাই অনুকূল নয়।

জিগাপ্টার্নের গিথুব সংগ্রহশালা থেকে সরাসরি নেওয়া একটি উদাহরণ এখানে:

install.packages("remotes")
remotes::install_github("coolbutuseless/ggpattern")

library(ggplot2)
library(ggpattern)

df <- data.frame(level = c("a", "b", "c", 'd'), outcome = c(2.3, 1.9, 3.2, 1))

ggplot(df) +
  geom_col_pattern(
    aes(level, outcome, pattern_fill = level), 
    pattern = 'stripe',
    fill    = 'white',
    colour  = 'black'
  ) +
  theme_bw(18) +
  theme(legend.position = 'none') + 
  labs(
    title    = "ggpattern::geom_pattern_col()",
    subtitle = "pattern = 'stripe'"
  ) +
  coord_fixed(ratio = 1/2)

যার ফলাফল এই চক্রান্ত:

ggpattern উদাহরণ চক্রান্ত

যদি কেবল কয়েকটি বার স্ট্রিপ করা উচিত তবে geom_col_pattern()একটি pattern_alphaযুক্তি রয়েছে যা নির্দিষ্ট অযাচিত স্ট্রাইপগুলি সম্পূর্ণ স্বচ্ছ করতে ব্যবহৃত হতে পারে।




1

এটি একটি ডামি ডেটা ফ্রেম তৈরি করতে কার্যকর হতে পারে যার সংক্ষিপ্তসারগুলি "টেক্সচার" এর সাথে মিলে যায় এবং তারপরে geom_contour ব্যবহার করে। এখানে আমার উদাহরণ:

library(ggplot2)

eg = expand.grid(R1 = seq(0,1,by=0.01), R2 = seq(0,1,by=0.01))
     eg$importance = (eg$R1+eg$R2)/2

  ggplot(eg , aes(x = R1, y = R2)) +
  geom_raster(aes(fill = importance), interpolate=TRUE) +
  scale_fill_gradient2(low="white", high="gray20", limits=c(0,1)) +
  theme_classic()+
  geom_contour(bins=5,aes(z=importance), color="black", size=0.6)+
  coord_fixed(ratio = 1, xlim=c(0,1),ylim=c(0,1))

এবং এখানে ফলাফল: লাইনগুলি সহ ছায়াযুক্ত প্লট

(লাইনগুলি ধীর করা উচিত)

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