在R中有一个非常好的包.在python中,我能想到的最好的就是这个,使用squarify包(灵感来自关于如何做树图的帖子):
import numpy as np
import pandas as pd
import matplotlib as mpl
import matplotlib.pyplot as plt
import seaborn as sns # just to have better line color and width
import squarify
# for those using jupyter notebooks
%matplotlib inline
df = pd.DataFrame({
'v1': np.ones(100),
'v2': np.random.randint(1, 4, 100)})
df.sort_values(by='v2', inplace=True)
# color scale
cmap = mpl.cm.Accent
mini, maxi = df['v2'].min(), df['v2'].max()
norm = mpl.colors.Normalize(vmin=mini, vmax=maxi)
colors = [cmap(norm(value)) for value in df['v2']]
# …Run Code Online (Sandbox Code Playgroud) 我正在寻找一种方法来做一个(实际上很常见的)可视化,通过一组N个象形图显示将N个单元的分组分成几个类别 - 我更喜欢填充的正方形; 在报纸等中,人们可能会看到很少的人形形状 - 每个象形图根据第n个单元的类别着色.N固定为1或100,显示分数或百分比而非计数的图表可以.彩色的"条纹"必须包裹多行.是否有人知道R包中有此图表?
举一个具体的例子,
x =样本(c("A","B"),100,替换= T)
我想看一个10x10(或5x20,或其他)网格的彩色正方形,一些 - 对应于"A" - 彩色绿色,其他红色.绿色(同样是红色)方块可以"聚集",或保留原始顺序.
谢谢.
是否有任何简单的方法可以在ggplot2中与facet结合创建华夫饼块,或者与华夫饼包一起梳理?
例如,用100个方格替换下面的每个条形代表1%.
ggplot(mtcars, aes(x = factor(vs), y = hp, fill = as.factor(carb))) +
geom_bar(stat = 'identity', position = 'fill') +
facet_wrap('gear')
Run Code Online (Sandbox Code Playgroud) 我正在尝试创建一个华夫饼图,其中共有 9 个图。然而,无论我如何尝试,我都无法减少图中 3 列之间的间距。这就是我现在的情节。 华夫饼情节足球
到目前为止我使用的代码是这样的:-
fig1 <- waffle(Intvec, rows=10, size=2.0,
colors=c("#cb181d", "#238b45", "#0570b0",
"#fec44f", "#ec7014", "#6a51a3"),
title = "Inter")
fig1$layers[[1]]$aes_params$colour <- '#252525'
fin1 <- fig1 + theme(plot.background = element_rect(fill = "#252525", colour = "#252525")) +
theme(legend.position = "none") +
labs(y = "Serie A", main = "Inter") +
theme(axis.title.y = element_text(color="#bdbdbd", size=18, face="bold"),
plot.title = element_text(colour = "#ffffff", size = 20, face = "bold"))
fin1
Run Code Online (Sandbox Code Playgroud)
在使用 ggarrange 之前对其他 8 个地块执行相同的操作
fig <- ggarrange(fin1, fin2, fin3, fin4, fin5,
fin6, fin7, …Run Code Online (Sandbox Code Playgroud) 我从这个网站下载了 otf 文件。我的 IT 部门安装了“Font Awesome 5 Free Regular”,我使用了
library(extrafont)
font_import()
loadfonts(device = "win")
Run Code Online (Sandbox Code Playgroud)
我可以看到 Font Awesome 注册了“Font Awesome 5 Free Regular”。当我尝试将它与此测试代码一起使用时:
waffle(c(50, 30, 15, 5), rows = 5, use_glyph = "music", glyph_size = 6)
Run Code Online (Sandbox Code Playgroud)
我得到
Error: FontAwesome not found. Install via: https://github.com/FortAwesome/Font-Awesome/tree/master/fonts
Run Code Online (Sandbox Code Playgroud)
但该链接不会去任何地方。
我想使用 Font Awesome(或一个很好的替代方案)来制作有趣的华夫饼图。我是否错误地加载了字体?我缺少更好的选择吗?我一直在使用这篇文章作为指导。我还在stackoverflow 上阅读了一个相关的问题,但它没有帮助。我已经多次重新启动 Rstudio(和计算机),但没有成功。
更新
还是行不通。我已经删除并重新安装了 waffle 和 emojifont 包。我仍然收到错误代码:“错误:未找到 FontAwesome。通过以下方式安装:https : //github.com/FortAwesome/Font-Awesome/tree/master/fonts ”
我一直在玩这个waffle包,并试图让它与gganimate.
作为mpg示例,我创建了华夫饼图来显示每个模型的数量class。然后,我想使用 gganimate 依次显示每个制造商按类别划分的模型图表。我可以用来facet_wrap()同时显示所有制造商的图表,但希望能够循环浏览它们。
当我尝试将 gganimate 应用于华夫饼图时,出现错误:
mapply(FUN = f, ..., SIMPLIFY = FALSE) 中的错误:零长度输入不能与非零长度输入混合
我不确定是否waffle与 不兼容gganimate,或者我是否做错了什么。
这是代码:
library(tidyverse)
library(waffle)
library(gganimate)
data("mpg")
d <- mpg
d$class <- as.factor(d$class)
d$manufacturer <- as.factor(d$manufacturer)
plot <- d %>% count(manufacturer, class) %>%
ggplot(aes(fill = class, values = n)) +
geom_waffle(color = "white",
size = .75,
n_rows = 4) +
ggthemes::scale_fill_tableau(name = NULL) +
coord_equal() +
theme_minimal() +
theme(panel.grid = element_blank(), …Run Code Online (Sandbox Code Playgroud) 我正在尝试制作一个华夫饼图来使用黑暗模式。这涉及更改背景颜色和瓷砖灌浆的颜色。我不知道如何做瓷砖灌浆。
我无法执行任何正常操作来更改颜色:
counts <- c(a = 701, b = 1094, c = 1756)
waffle(counts,
rows=50,
size=0.75,
legend_pos="bottom") + theme(legend.key.size=unit(3, "mm"),
rect=element_rect(fill='black',
color='black'),
plot.background=element_rect(fill='black'),
strip.background = element_rect(colour=NA, fill=NA),
panel.background=element_rect(fill='black', color='black'))
Run Code Online (Sandbox Code Playgroud)
有一个拉取请求可以执行此操作,但发出请求的人删除了它。似乎颜色被设置为每个图块上的边距颜色,因为如果将 waffle 函数参数增加到size,size=0则不会得到图块灌浆:
如何使瓷砖填缝剂的颜色与背景一样黑色?
我一直在使用该包waffle,但无法解决如何修复此华夫饼图,使其显示 100 个方块/单元格

这是数据和我的代码:
# devtools::install_github("hrbrmstr/waffle")
library(ggplot)
library(waffle)
data <- structure(list(greenfield = c(0, 1), n = c(162L, 399L), total_investments = c(561,
561), percentage = c(28.8770053475936, 71.1229946524064), name_greenfield = c("M&A",
"Greenfield")), row.names = c(NA, -2L), groups = structure(list(
greenfield = c(0, 1), .rows = structure(list(1L, 2L), ptype = integer(0), class = c("vctrs_list_of",
"vctrs_vctr", "list"))), row.names = c(NA, -2L), class = c("tbl_df",
"tbl", "data.frame"), .drop = TRUE), class = c("grouped_df",
"tbl_df", "tbl", "data.frame"))
# Waffle plot
ggplot(data,
aes(fill = name_greenfield, …Run Code Online (Sandbox Code Playgroud) waffle-chart ×9
r ×8
ggplot2 ×5
animation ×1
bokeh ×1
charts ×1
font-awesome ×1
gganimate ×1
ggpubr ×1
matplotlib ×1
python ×1
seaborn ×1