আর-এ কীভাবে ওয়াফল চার্ট তৈরি করবেন?


11

আমি কীভাবে আরে পাইচার্ট ব্যবহারের বিকল্প হিসাবে একটি ওয়াফল চার্ট প্লট করতে পারি?

help.search("waffle")
No help files found with alias or concept or title matching waffle
using fuzzy matching.

সবচেয়ে কাছের আমি গুগলিং খুঁজে পেয়েছি সেখানে মোজাইকপ্লট আছে।


আমি জানি না, তবে কেন আরও ভাল পদ্ধতি ব্যবহার করবেন না? ডট চার্টগুলি আরও ভাল।
পিটার ফ্লুম - মনিকা

2
যারা ওয়াফেল চার্টগুলি জানতে চান তাদের জন্য, ইজার আইজ ব্লগে রবার্ট কোসারা তাদের সম্পর্কে একটি টুকরো রয়েছে । জন পেল্টিরের মন্তব্যেও খেয়াল করুন।
অ্যান্ডি ডাব্লু

সর্বনিকটবর্তী বস্তু আমি খুঁজে পাইনি এই । এফডব্লিউআইডাব্লু, আমি পিটারের সাথে একমত, আমি ডেটা ভিজ্যুয়ালাইজ করার সময় পাই এবং ওয়াফলগুলি এড়িয়ে চলি।

উত্তর:


13

এখন ওয়াফেল নামে একটি প্যাকেজ রয়েছে ।

গিথুব পৃষ্ঠা থেকে উদাহরণ:

parts <- c(80, 30, 20, 10)
waffle(parts, rows=8)

ফলাফল:

ফলাফল

শুভেচ্ছা সহ


আমি জানতাম না এগুলিকে "ওয়েফল চার্ট" বলা হয়। আমি তাদের পছন্দ করি - ভাল পাই চার্ট প্রতিস্থাপন
শ্যাডটলকার 21'9

7

আমি সন্দেহ করি যে geom_tileপ্যাকেজটি থেকে ggplot2আপনি যা খুঁজছেন তা করতে পারে। এই স্ট্যাক ওভারফ্লো প্রশ্নে শেনের উত্তর আপনাকে শুরু করা উচিত।

সম্পাদনা করুন: তুলনার জন্য আরও কয়েকটি প্লট সহ এখানে একটি উদাহরণ।

library(ggplot2)

# Here's some data I had lying around
tb <- structure(list(region = c("Africa", "Asia", "Latin America", 
"Other", "US-born"), ncases = c(36L, 34L, 56L, 2L, 44L)), .Names = c("region", 
"ncases"), row.names = c(NA, -5L), class = "data.frame")


# A bar chart of counts
ggplot(tb, aes(x = region, weight = ncases, fill = region)) +
    geom_bar()

# Pie chart.  Forgive me, Hadley, for I must sin.
ggplot(tb, aes(x = factor(1), weight = ncases, fill = region)) +
    geom_bar(width = 1) +
    coord_polar(theta = "y") +
    labs(x = "", y = "")

# Percentage pie.
ggplot(tb, aes(x = factor(1), weight = ncases/sum(ncases), fill = region)) +
    geom_bar() +
    scale_y_continuous(formatter = 'percent') +
    coord_polar(theta = "y") +
    labs(x = "", y = "")


# Waffles
# How many rows do you want the y axis to have?
ndeep <- 5

# I need to convert my data into a data.frame with uniquely-specified x
# and y coordinates for each case
# Note - it's actually important to specify y first for a
# horizontally-accumulating waffle
# One y for each row; then divide the total number of cases by the number of
# rows and round up to get the appropriate number of x increments
tb4waffles <- expand.grid(y = 1:ndeep,
                          x = seq_len(ceiling(sum(tb$ncases) / ndeep)))

# Expand the counts into a full vector of region labels - i.e., de-aggregate
regionvec <- rep(tb$region, tb$ncases)

# Depending on the value of ndeep, there might be more spots on the x-y grid
# than there are cases - so fill those with NA
tb4waffles$region <- c(regionvec, rep(NA, nrow(tb4waffles) - length(regionvec)))

# Plot it
ggplot(tb4waffles, aes(x = x, y = y, fill = region)) + 
    geom_tile(color = "white") + # The color of the lines between tiles
    scale_fill_manual("Region of Birth",
                      values = RColorBrewer::brewer.pal(5, "Dark2")) +
    opts(title = "TB Cases by Region of Birth")

উদাহরণস্বরূপ ওয়াফেল প্লট

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


3

@Jbkunst এর ডেটা ব্যবহার করে এখানে বেস রতে একটি রয়েছে:

waffle <- function(x, rows, cols = seq_along(x), ...) {
  xx <- rep(cols, times = x)
  lx <- length(xx)
  m <- matrix(nrow = rows, ncol = (lx %/% rows) + (lx %% rows != 0))
  m[1:length(xx)] <- xx

  op <- par(no.readonly = TRUE)
  on.exit(par(op))

  par(list(...))
  plot.new()
  o <- cbind(c(row(m)), c(col(m))) + 1
  plot.window(xlim = c(0, max(o[, 2]) + 1), ylim = c(0, max(o[, 1]) + 1),
              asp = 1, xaxs = 'i', yaxs = 'i')
  rect(o[, 2], o[, 1], o[, 2] + .85, o[, 1] + .85, col = c(m), border = NA)

  invisible(list(m = m, o = o))
}


cols <- c("#F8766D", "#7CAE00", "#00BFC4", "#C77CFF")
m <- waffle(c(80, 30, 20, 10), rows = 8, cols = cols, mar = c(0,0,0,7),
            bg = 'cornsilk')
legend('right', legend = LETTERS[1:4], pch = 15, col = cols, pt.cex = 2,
       bty = 'n')

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


2
সমস্ত উদাহরণগুলিতে উচ্চ কালি রয়েছে: তথ্য অনুপাত।
ফ্র্যাঙ্ক হ্যারেল

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

1
সুতরাং আপনি বলছেন যে আমি যখন বার্ষিক বার চার্ট কনভেনশনে এই প্লটটি উপস্থাপন করি তখন আমার ভিড়ের মধ্যে অনেক বিদ্বেষী আশা করা উচিত? মাথা আপ করার জন্য ধন্যবাদ
কাঁচার

এটিকে বৃত্তাকার করুন: গ্রাফটি পাঠকদের কাছে বলছে বলে মনে হচ্ছে: দেখুন, গ্রাফটি বোঝার জন্য আপনি নিজেরাই গণনা করতে পারেন! সংখ্যাগুলি যদি বড় হয় তবে তা সম্ভব নয়। যদি সংখ্যাগুলি ছোট হয় তবে এটি অন্যান্য গ্রাফের তুলনায় এখনও বেশি সহায়ক নয়। ছোট বাচ্চাদের জন্য, এটি আরও শক্তিশালী যাতে তারা গ্রাফিকগুলি বুঝতে পারে। আর কার বার্তা দরকার?
নিক কক্স

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