ওহে লোকেরা এখানে একটি উইক হ্যাক যা টেক্সচার ইস্যুটিকে খুব বেসিক ফ্যাশনে সম্বোধন করে:
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() +
theme(legend.position = "none")+
scale_fill_grey(start=.4)+
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),
y = c(0,0,20,20),
x2 = c(1.2,1.2,1.45,1.45),
y2 = c(0,0,11.5,11.5),
x3 = c(1.38,1.38,1.45,1.45),
y3 = c(0,0,3.5,3.5),
x4 = c(.8,.8,1.26,1.26),
y4 = c(0,0,20,20),
x5 = c(.6,.6,1.07,1.07),
y5 = c(0,0,20,20),
x6 = c(.555,.555,.88,.88),
y6 = c(6,6,20,20),
x7 = c(.555,.555,.72,.72),
y7 = c(13,13,20,20),
x8 = c(.8,.8,1.26,1.26),
y8 = c(0,0,20,20),
Fill = "Diagonal Pattern"
)
সেখান থেকে আমি উপরের জিগ্ল্লটতে জিওমপ্যাথগুলি যুক্ত করেছি যার সাথে প্রত্যেকে আলাদা আলাদা স্থানাঙ্ক কল করে কাঙ্ক্ষিত বারের উপর দিয়ে রেখাগুলি আঁকছি:
+geom_path(data=Diag, aes(x=x, y=y),colour = "black")+
geom_path(data=Diag, aes(x=x2, y=y2),colour = "black")+
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 সম্পাদনা করুন: জিগ_বার প্লটগুলিতে প্যাটার্নগুলি যুক্ত করার প্রক্রিয়াটি আরও সহজ করার জন্য আমি লিখেছি ফাংশন ডিমের একটি লিঙ্ক ।