ডিজিটাল রঙ প্যালেট অনুকরণ করুন


191

পছন্দসই সংখ্যক রঙের জন্য ggplot2 এর ডিফল্ট রঙ প্যালেট অনুকরণ করতে আমি কোন ফাংশন ব্যবহার করতে পারি। উদাহরণস্বরূপ, 3 টির একটি ইনপুট এই রঙগুলির সাথে এইচএক্স রঙের একটি চরিত্রের ভেক্টর তৈরি করতে পারে: এখানে চিত্র বর্ণনা লিখুন


10
স্কেল প্যাকেজটি দেখুন
হ্যাডলি

2
হ্যাঁ! আমি display.brewer.all()আমার ডেস্কে একটি প্রিন্ট আউট রাখি। আমি মনে করি যে আমি উপাদানগুলি জন্য সেট 1 পছন্দ করি।
জন কলবি

ভাল ধারণা! আমি একই প্রিন্টআউট করতে যাচ্ছি। সেট 1 এ সম্মত, আমি ইতিমধ্যে আমার বেশিরভাগ নতুন চার্টে এটি ব্যবহার করে দেখতে পেয়েছি।
এসফুন 28

উত্তর:


264

এটি 15 থেকে শুরু করে রঙ চাকাটির চারপাশে সমানভাবে দূরত্বে রঙিন রঙের:

gg_color_hue <- function(n) {
  hues = seq(15, 375, length = n + 1)
  hcl(h = hues, l = 65, c = 100)[1:n]
}

উদাহরণ স্বরূপ:

n = 4
cols = gg_color_hue(n)

dev.new(width = 4, height = 4)
plot(1:n, pch = 16, cex = 2, col = cols)

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


2
+1 টি আমি আপনার সুন্দর মত, সহজ সমাধান, যদিও আমি এখনো বুঝতে কেন আপনি চেষ্টা করছি length=n+1seq, যেহেতু আমিlength=n
Andrie

18
কারণ 0 == 360
হ্যাডলি

128

এটি থেকে ফলাফল

library(scales)
show_col(hue_pal()(4))

চার রঙের জিজিপ্লট

show_col(hue_pal()(3))

তিন রঙের জিপিপ্লট


1
অদ্ভুতভাবে যথেষ্ট, রঙগুলি (কমপক্ষে দ্বিতীয় ছবিতে) তাদের আরজিবি কোডগুলির সাথে মেলে না। তবে, আমি স্থানীয়ভাবে তৈরি একটি গ্রাফ খুঁজছি, এই আরজিবি কোডগুলি সঠিক are
স্পারহাক

1
সম্ভবত এটি একটি ব্রাউজার জিনিস?
চূড়ায়_লিকা_স্পিডার

1
হ্যাঁ, খুব বিজোড় ফায়ারফক্সে, সবুজটি # 15ba3e, ক্রোমিয়ামে এটি # 00b83a এবং চিত্রটি ডাউনলোড করার পরে এবং একটি উত্সর্গীকৃত চিত্র প্রোগ্রামে (জেনউইনভিউ) দেখার পরে এটি # 00b839। কেবল কনকরার এটিকে # 00ba38 হিসাবে সঠিকভাবে দেখায়। সুতরাং শুধুমাত্র একটি সঠিক, এবং কোনওটিই সামঞ্জস্যপূর্ণ নয়!
স্পারহক

1
রঙের নাম, যেমন 'red2', 'নীল 3' পাওয়ার কোনও উপায় আছে? রঙ কোড, যেমন # 00b83a, স্বজ্ঞাতভাবে ব্যবহার করা শক্ত।
সিবো জিয়াং

2
অনুলিপি এবং অনুলিপি করতে হেক্স মানগুলি হ'ল: # f8766 ডি - লাল # 00ba38 - সবুজ # 83b0fc - নীল
প্লুকে

62

এই উত্তরগুলি সব খুব ভাল, কিন্তু আমি স্ট্যাকওভারফ্লোতে আবিষ্কার করা অন্য একটি জিনিস ভাগ করে নিতে চেয়েছিলাম যা সত্যিই বেশ দরকারী, এখানে সরাসরি লিঙ্ক

মূলত, @ ডিডজিসএলফার্টস দেখায় যে আপনি কীভাবে সমস্ত রঙ, স্থানাঙ্ক ইত্যাদি পেতে পারেন যা জিজিপ্লট আপনার তৈরি প্লট তৈরি করতে ব্যবহার করে। খুব সুন্দর!

p <- ggplot(mpg,aes(x=class,fill=class)) + geom_bar()
ggplot_build(p)$data
[[1]]
     fill  y count x ndensity ncount  density PANEL group ymin ymax xmin xmax
1 #F8766D  5     5 1        1      1 1.111111     1     1    0    5 0.55 1.45
2 #C49A00 47    47 2        1      1 1.111111     1     2    0   47 1.55 2.45
3 #53B400 41    41 3        1      1 1.111111     1     3    0   41 2.55 3.45
4 #00C094 11    11 4        1      1 1.111111     1     4    0   11 3.55 4.45
5 #00B6EB 33    33 5        1      1 1.111111     1     5    0   33 4.55 5.45
6 #A58AFF 35    35 6        1      1 1.111111     1     6    0   35 5.55 6.45
7 #FB61D7 62    62 7        1      1 1.111111     1     7    0   62 6.55 7.45

45

হ্যাডলি উইকহ্যামের জিপিপ্লট 2 বইয়ের 106 পৃষ্ঠা থেকে:

ডিফল্ট রঙের স্কীম, স্কেল_সকল_এইচসিএল রঙের চক্রের চারপাশে সমানভাবে ব্যবধানযুক্ত বর্ণ বেছে নেয় ues

বিপরীত প্রকৌশল কিছুটা দিয়ে আপনি এই ফাংশনটি তৈরি করতে পারেন:

ggplotColours <- function(n = 6, h = c(0, 360) + 15){
  if ((diff(h) %% 360) < 1) h[2] <- h[2] - 360/n
  hcl(h = (seq(h[1], h[2], length = n)), c = 100, l = 65)
}

বারপ্লট এ এটি প্রদর্শন করে:

y <- 1:3
barplot(y, col = ggplotColours(n = 3))

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


2
এটি এর চেয়েও সহজ। আপনি বীজগণিতের প্রথম লাইনটি এড়াতে পারবেন, যদিও এটি সাহায্যে নেই, তবে hclমানগুলি> 360 কে পুনর্বিবেচনা করে
জন কোলবি

13
আপনি scales:::show_col(ggplotColours(n=3))রঙ এবং মানগুলি প্রদর্শন করতেও ব্যবহার করতে পারেন
স্ট্যাট-আর

যদিও আমি এখনও স্কেলগুলি কীভাবে পেতে পারি এবং কীভাবে (হেক্স বা অন্য যে কোনও ফর্ম্যাটটি) এর প্লটকে মূল্য দেয় তার তীরচিহ্নগুলি প্রদর্শন করতে পারি না ...
স্টেফানো
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.