【问题标题】:How to create grouped piechart如何创建分组饼图
【发布时间】:2016-12-24 15:05:32
【问题描述】:

我有这个熊猫数据框:

df =

GROUP   MARK
ABC     1
ABC     0
ABC     1
DEF     1
DEF     1
DEF     1
DEF     1
XXX     0

我需要创建一个饼图(使用 Python 或 R)。每个饼图的大小应与具有特定GROUP 的行的比例计数(即百分比)相对应。此外,每个饼图应分为 2 个子部分,对应于给定GROUP 内具有MARK==1MARK==0 的行的百分比。

我在谷歌上搜索这种类型的饼图并找到this one。但是对于我的情况,这个例子似乎过于复杂了。另一个很好的例子是在JavaScript 中完成的,由于语言的原因,它不适合我。

谁能告诉我这种饼图的名称是什么?我在哪里可以找到一些 Python 或 R 代码示例。

【问题讨论】:

  • 您可以使用 highcharter,它是 highcharts JS 库的 R 包装器(由您的第二个“好例子”使用)。不过,我认为这不是呈现数据的好方法。
  • @arvi1000:你能发布一些饼图的例子吗?我只能找到条形图和时间序列。
  • 虽然您可以使用饼图,但我认为这不是表示分层数据的最佳方式。有很多替代方案,例如树形图或华夫饼图。如果您想坚持使用径向选项,我会查看 coxcomb 情节或旭日形情节。所有这些选项都有便于绘图的包。

标签: python r matplotlib ggplot2


【解决方案1】:

这是 R 中的一个解决方案,它仅使用基础 R。不知道你想怎么安排你的馅饼,但我用了par(mfrow=...)

df <- read.table(text="  GROUP   MARK
ABC     1
ABC     0
ABC     1
DEF     1
DEF     1
DEF     1
DEF     1
XXX     0", header=TRUE)

plot_pie <- function(x, multiplier=1, label){
   pie(table(x), radius=multiplier * length(x), main=label)
}

par(mfrow=c(1,3), mar=c(0,0,2,0))
invisible(lapply(split(df, df$GROUP), function(x){
  plot_pie(x$MARK, label=unique(x$GROUP),
       multiplier=0.2)
}))

这是结果:

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-02-23
    • 1970-01-01
    • 1970-01-01
    • 2022-07-11
    • 1970-01-01
    • 2018-07-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多