【问题标题】:grid.table plots: Setting cell background color based on row valuesgrid.table plots:根据行值设置单元格背景颜色
【发布时间】:2018-08-21 21:50:08
【问题描述】:

我正在使用grid.table() 将数据框打印为绘图。我想用每行中包含的颜色作为十六进制代码填充单元格。

下面是我正在使用的行的示例。

df    
1 "#FFB325" "#000000" "#FFFFFF" "#00080"  
2 "#000000" "#000080" "#FFB325" "#FFFFFF"

我尝试使用 grid.table(as.color(df)) 打印绘图。 Grid.table 给了我我想要的东西,除了没有颜色编码的单元格。

任何帮助将不胜感激!

【问题讨论】:

  • 输出什么单元格?
  • df 是一个 R data.frame 对象。 要在哪里给单元格着色?在 RMarkdown 文档中?使用特定的包?你想做什么?
  • 也许 OP 正在使用 RStudio,并希望 View(df) 函数在查看窗格中显示彩色单元格。 (注意:这是不可能的。)如果是这种情况,那么我建议您进一步探索 R 和 RStudio,以进一步了解这两者是什么以及它们的典型用法。
  • 我使用 grid.table(df) 制作表格,并希望网格表格中的每个单元格与单元格中的数字对应的颜色

标签: r


【解决方案1】:

如果您想为每个单元格选择背景颜色,请定义一个颜色集,然后使用自定义主题应用它。

试试这样的:

color_df <- data.frame(color = c("#FFB325", "#00EE00", "#FFFFFF", "#008080", 
                                 "#00EE00", "#008080", "#FFB325", "#FFFFFF"),
                       stringsAsFactors = FALSE)


my_table_theme <- ttheme_default(core=list(bg_params = list(fill = color_df$color, col=NA)))

grid.table(color_df, theme = my_table_theme)

要显示多列,每列都有不同的颜色,请为每列创建一个单独的主题,然后将它们与grid.arrange() 一起显示:

color_df <- data.frame(blues = c("#F7FBFF", "#DEEBF7", "#C6DBEF", "#9ECAE1", "#6BAED6", "#4292C6", 
                                 "#2171B5", "#084594"),
                       greens = c("#F7FCF5", "#E5F5E0", "#C7E9C0", "#A1D99B", "#74C476", "#41AB5D", 
                                  "#238B45", "#005A32"),
                       spectral = c("#D53E4F", "#F46D43", "#FDAE61", "#FEE08B", "#E6F598", "#ABDDA4", 
                                    "#66C2A5", "#3288BD"),
                       stringsAsFactors = FALSE)


table_theme_blues <- ttheme_default(core=list(bg_params = list(fill = color_df$blues, col=NA)))
table_theme_greens <- ttheme_default(core=list(bg_params = list(fill = color_df$greens, col=NA)))
table_theme_spectral <- ttheme_default(core=list(bg_params = list(fill = color_df$spectral, col=NA)))

grid.arrange(
    tableGrob(color_df["blues"], theme=table_theme_blues, rows = NULL),
    tableGrob(color_df["greens"], theme=table_theme_greens, rows = NULL),
    tableGrob(color_df["spectral"], theme=table_theme_spectral, rows = NULL),
    nrow=1)

【讨论】:

  • 非常感谢!!有没有办法用多列和多行来做到这一点?当我尝试添加更多颜色并将其应用于 df 时,它会为每一行显示相同的颜色,保持颜色数与我的 df @HAVB 中的行数相匹配
  • @user10256905 没问题。如果答案解决了您的问题,您可以考虑通过单击它旁边的复选标记来接受它 - 这对于未来的访问者了解该解决方案已经过测试并且有效很有用
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-07-13
  • 2016-02-08
  • 1970-01-01
  • 2014-09-30
  • 1970-01-01
  • 2010-11-21
相关资源
最近更新 更多