ggvis中的自定义填充颜色(和其他选项)

索伦

我正在尝试使用ggvis创建2014赛季的NFL赛程表。数据来自FootballOutsiders.com,稍后我将制作一个Shiny应用程序,该应用程序会在该季节更新时自动从网站上抓取数据。下面的示例非常接近,但是我想做一些修改。我想要...

  1. 在图表的每个单元格中包含“防御”的数值,因此可视化效果类似于原始的“ df”数据框。

  2. 自定义颜色比例,以便正值逐渐变为橙色,负值逐渐变为蓝色(即,负值越大=蓝色越多)。

  3. #2的替代方法是从橙色到蓝色形成渐变,并在“防御”值接近零时将不透明度降低到0.5。

  4. 可以选择NA的颜色,因为它在图表中当前显示为黑色。

我一直在修改add_scale()props(),但是到目前为止,没有任何工作。

图表如下: 在此处输入图片说明

数据如下:

df <- structure(list(team = c("ARI", "ATL", "BAL", "BUF", "CAR", "CHI", 
"CIN", "CLE", "DAL", "DEN", "DET", "GB", "HOU", "IND", "JAX", 
"KC", "MIA", "MIN", "NE", "NO", "NYG", "NYJ", "OAK", "PHI", "PIT", 
"SD", "SEA", "SF", "STL", "TB", "TEN", "WAS"), w1 = c(17.5, -5.8, 
-12.6, 8.7, -6.8, -13.8, -8.7, 4, -4.6, 0.9, -11.4, -25.9, 4.2, 
-0.2, 4.9, 4.2, 4.2, -5.7, 2.4, 13.5, -0.8, 10.3, -5.6, 10.9, 
8.2, -16.4, 14.4, 13.8, 10.5, -15.7, -6.7, 2.5), w2 = c(-11.4, 
-12.6, 4, 2.4, -0.8, -4.6, 13.5, -5.8, 4.2, -6.7, -15.7, -5.6, 
10.3, 4.9, 4.2, -0.2, -13.8, 4.2, 10.5, 8.2, -16.4, 14.4, 2.5, 
0.9, -8.7, -25.9, 17.5, 8.7, -6.8, -5.7, 13.8, 10.9), w3 = c(-4.6, 
-6.8, 8.2, 17.5, 4, -5.6, 4.2, -8.7, -5.7, -25.9, 14.4, -0.8, 
-11.4, 10.9, 0.9, 2.4, -6.7, -5.8, 10.3, 10.5, 2.5, 8.7, 4.2, 
4.2, -15.7, -13.8, -0.2, -16.4, 13.8, 13.5, -12.6, 4.9), w4 = c(NA, 
10.5, -15.7, 2.5, -8.7, 14.4, NA, NA, -5.8, NA, -5.6, 8.7, -13.8, 
4.2, 17.5, 4.2, 10.3, 13.5, -6.7, 13.8, 4.2, -0.8, 2.4, -4.6, 
-6.8, 10.9, NA, 4.9, NA, 4, 0.9, -11.4), w5 = c(-0.2, -11.4, 
0.9, -0.8, 8.7, -15.7, 4.2, 4.2, 2.5, -16.4, -13.8, 10.5, 13.8, 
-8.7, 4, -4.6, NA, 14.4, -12.6, -6.8, 13.5, 17.5, NA, -5.7, 10.9, 
-5.6, 4.2, -6.7, 4.9, -5.8, 8.2, -25.9), w6 = c(4.2, 8.7, -6.8, 
4.2, -12.6, 13.5, -15.7, 4, -25.9, -5.6, 10.5, 2.4, 0.9, 2.5, 
4.2, NA, 14.4, -0.8, -13.8, NA, 4.9, -0.2, 17.5, -11.4, 8.2, 
10.3, 13.8, -5.7, -4.6, -8.7, 10.9, -16.4), w7 = c(10.3, -8.7, 
13.5, 10.5, 14.4, 2.4, 0.9, 10.9, -11.4, -4.6, -5.8, -15.7, 4, 
-12.6, 8.2, 17.5, 8.7, -13.8, -5.6, -0.8, 13.8, 4.2, -16.4, NA, 
2.5, -6.7, -5.7, -0.2, -25.9, NA, 4.2, 4.2), w8 = c(4.9, -0.8, 
-12.6, -5.6, -25.9, 4.2, -8.7, 10.3, 4.2, 17.5, 13.5, -5.8, 4.2, 
4, 2.4, -5.7, 10.9, -6.8, 8.7, 14.4, NA, -13.8, 8.2, -16.4, 0.9, 
-0.2, -15.7, NA, -6.7, 10.5, 2.5, 13.8), w9 = c(13.8, NA, 4, 
NA, -5.8, NA, 10.9, -6.8, -16.4, 4.2, NA, NA, 4.9, -11.4, -12.6, 
-5.6, 17.5, 4.2, -0.2, -15.7, 0.9, -6.7, -25.9, 2.5, -8.7, 2.4, 
10.3, -5.7, -4.6, 8.2, NA, 10.5), w10 = c(-5.7, -6.8, 4.2, -6.7, 
4.9, 14.4, 8.2, -12.6, 10.9, 10.3, 2.4, 8.7, NA, NA, 13.8, -13.8, 
-0.8, NA, NA, -4.6, -25.9, 4, -0.2, -15.7, -5.6, NA, -11.4, -5.8, 
-16.4, 13.5, -8.7, NA), w11 = c(-0.8, -15.7, NA, 2.4, 13.5, 10.5, 
-5.8, 2.5, NA, -5.7, -16.4, 4.9, 8.2, 4.2, NA, -25.9, -13.8, 
8.7, 0.9, -12.6, -4.6, NA, 17.5, 14.4, 4.2, 10.3, -6.7, -11.4, 
-0.2, 4.2, 4, -6.8), w12 = c(-25.9, 8.2, -5.8, -5.6, NA, -6.8, 
2.5, 13.5, -11.4, 2.4, 4.2, 10.5, -12.6, 10.9, 0.9, 10.3, -0.2, 
14.4, -0.8, -8.7, 13.8, -13.8, -6.7, 4.2, NA, -5.7, -16.4, 4.2, 
17.5, 8.7, 4.9, -4.6), w13 = c(13.5, -16.4, 17.5, 8.2, 10.5, 
-0.8, -6.8, -13.8, 4.9, -6.7, 8.7, 4.2, 4.2, 4.2, -11.4, -0.2, 
-5.6, -15.7, 14.4, 4, 10.9, 2.4, -5.7, 13.8, -5.8, -8.7, -4.6, 
-25.9, 10.3, -12.6, 2.5, 0.9), w14 = c(-6.7, 14.4, 2.4, -0.2, 
-5.8, 13.8, 4, 0.9, 8.7, -13.8, -6.8, 13.5, 10.9, 8.2, 2.5, -16.4, 
-8.7, -5.6, 17.5, -15.7, 4.2, 10.5, -4.6, -25.9, -12.6, 4.2, 
4.9, 10.3, 4.2, -0.8, -11.4, -5.7), w15 = c(-5.7, 4, 10.9, 14.4, 
-6.8, -5.8, 8.2, -12.6, 4.9, 17.5, 10.5, -13.8, 0.9, 2.5, -8.7, 
10.3, 4.2, -0.8, 2.4, 8.7, 4.2, 4.2, -6.7, 13.8, 13.5, -0.2, 
-4.6, -25.9, -16.4, -15.7, -5.6, -11.4), w16 = c(-25.9, -5.8, 
2.5, 10.3, 8.2, -0.8, -0.2, -15.7, 0.9, -12.6, 8.7, -6.8, -8.7, 
13.8, 4.2, 4, 10.5, 2.4, -5.6, 13.5, -5.7, 4.2, -13.8, 4.2, -6.7, 
-4.6, -16.4, 17.5, -11.4, 14.4, 10.9, 4.9), w17 = c(-4.6, -15.7, 
8.2, 4.2, 13.5, 10.5, 4, -8.7, 4.2, 10.3, 14.4, -0.8, 10.9, 4.2, 
2.5, 17.5, -5.6, 8.7, -13.8, -6.8, 4.9, 2.4, -0.2, -11.4, -12.6, 
-6.7, -5.7, -16.4, -25.9, -5.8, 0.9, 13.8)), .Names = c("team", 
"w1", "w2", "w3", "w4", "w5", "w6", "w7", "w8", "w9", "w10", 
"w11", "w12", "w13", "w14", "w15", "w16", "w17"), row.names = c(NA, 
32L), class = "data.frame")

这是到目前为止的代码:

require(dplyr)
require(ggvis)
require(tidyr) # For the gather function

df2 <- df %>% gather(key, value, w1:w17)
names(df2) <- c("team", "week", "defense")

df2 %>% 
  ggvis(~week, ~team, fill = ~defense) %>%
  layer_rects(width = band(), height = band()) %>%
  scale_nominal("x", padding = 0, points = FALSE) %>%
  scale_nominal("y", padding = 0, points = FALSE)
eipi10

我通过创建一个新变量def.color将每个值映射defense到特定颜色来设置每个单元格的颜色。在中,ggplot2您可以直接在调用中ggplot使用一行代码(例如)设置颜色scale_fill_manual(),而不是在数据框中添加颜色变量。我希望可以在中实现此目的ggvis,但是我还没有找到它。所以,现在,我们开始:

# Create a new variable df2$def.color for mapping df2$defense values to colors

# Functions to create color ramps for the blue and orange color ranges
Blue = colorRampPalette(c("darkblue","lightblue"))
Orange = colorRampPalette(c("orange","darkorange3"))

# Negative values of defense get a blue color scale with 10 colors
df2$def.color[!is.na(df2$defense) & df2$defense<0] = 
  as.character(cut(df2$defense[!is.na(df2$defense) & df2$defense<0], 
                   seq(min(df2$defense - 0.1, na.rm=TRUE), 0, length.out=11), 
                   labels=Blue(10)))

# Positive values of defense get an orange color scale with 10 colors
df2$def.color[!is.na(df2$defense) & df2$defense>=0] = 
  as.character(cut(df2$defense[!is.na(df2$defense) & df2$defense>=0], 
                   seq(0, max(df2$defense, na.rm=TRUE)+0.1, length.out=11), 
                   labels=Orange(10)))

# Set NA values in df2$def.color to light gray in df2$def.color
df2$def.color[is.na(df2$defense)] = "#E5E5E5"  

# Set NA values in df2$defense to blanks so that we won't get "NaN" in cells with 
# missing data
df2$defense[is.na(df2$defense)] = ""

现在我们创建情节。要获取颜色,请映射def.colorfill使用:=以覆盖默认颜色。添加defenseuse的值layer_text我对每个单元格中的文本放置不满意,但这是我目前能想到的最好的方法。

df2 %>% 
  ggvis(~week, ~team, fill:=~def.color) %>% 
  layer_rects(width = band(), height = band()) %>%
  scale_nominal("x", padding = 0, points = FALSE) %>%
  scale_nominal("y", padding = 0, points = FALSE) %>%
  layer_text(text:=~defense, stroke:="white", align:="left", baseline:="top") 

在此处输入图片说明

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Wordpress中的自定义颜色选项

来自分类Dev

Symfony FormBuilder-其他元素的自定义选项?

来自分类Dev

自定义字段默认值-填充相同字段中的其他条目

来自分类Dev

如何在图表中设置自定义填充颜色

来自分类Dev

为什么在磁盘中的自定义格式中禁用了 Btrfs 和其他文件?

来自分类Dev

ActiveAdmin和其他自定义CSS文件

来自分类Dev

隐藏特定页面WooCommerce描述和其他信息以及使用Wordpress自定义字段的评论选项卡

来自分类Dev

Django REST序列化程序和自定义模型字段中的其他属性

来自分类Dev

将请求对象和其他参数放入自定义装饰器中

来自分类Dev

用自定义颜色填充RoundedRectangle

来自分类Dev

填充颜色自定义形状Java

来自分类Dev

其他文件中的自定义.vimrc设置

来自分类Dev

API文档中的自定义其他信息

来自分类Dev

从JNDI自定义资源中检索其他属性

来自分类Dev

其他文件中的自定义.vimrc设置

来自分类Dev

不在其自定义委托的其他自定义类中调用自定义委托方法

来自分类Dev

在IconPageIndicator中自定义填充和边距

来自分类Dev

在WORKORDER中填充自定义X和Y字段

来自分类Dev

在Squarespace中自定义图像大小和填充

来自分类Dev

在IconPageIndicator中自定义填充和边距

来自分类Dev

Android中的自定义主题和颜色

来自分类Dev

使用 pylab 在 ipython 中自定义颜色和标记

来自分类Dev

展开DataFrame的列,并用自定义值填充其他列的内容

来自分类Dev

Woocommerce其他信息选项卡:添加产品自定义字段值

来自分类Dev

如何查看SwiftUI可以提供作为自定义字体的Font的其他选项?

来自分类Dev

匹配文字样式和自定义首选项的填充

来自分类Dev

需要基于其他列中的值在列中填充自定义序列索引,以便使用Mulesoft中的Data Weave进行流处理

来自分类Dev

自定义tumblr标签可为边框颜色和边框图像创建主题选项

来自分类Dev

通过Sharepoint与其他人共享自定义宏和自定义Excel功能区

Related 相关文章

  1. 1

    Wordpress中的自定义颜色选项

  2. 2

    Symfony FormBuilder-其他元素的自定义选项?

  3. 3

    自定义字段默认值-填充相同字段中的其他条目

  4. 4

    如何在图表中设置自定义填充颜色

  5. 5

    为什么在磁盘中的自定义格式中禁用了 Btrfs 和其他文件?

  6. 6

    ActiveAdmin和其他自定义CSS文件

  7. 7

    隐藏特定页面WooCommerce描述和其他信息以及使用Wordpress自定义字段的评论选项卡

  8. 8

    Django REST序列化程序和自定义模型字段中的其他属性

  9. 9

    将请求对象和其他参数放入自定义装饰器中

  10. 10

    用自定义颜色填充RoundedRectangle

  11. 11

    填充颜色自定义形状Java

  12. 12

    其他文件中的自定义.vimrc设置

  13. 13

    API文档中的自定义其他信息

  14. 14

    从JNDI自定义资源中检索其他属性

  15. 15

    其他文件中的自定义.vimrc设置

  16. 16

    不在其自定义委托的其他自定义类中调用自定义委托方法

  17. 17

    在IconPageIndicator中自定义填充和边距

  18. 18

    在WORKORDER中填充自定义X和Y字段

  19. 19

    在Squarespace中自定义图像大小和填充

  20. 20

    在IconPageIndicator中自定义填充和边距

  21. 21

    Android中的自定义主题和颜色

  22. 22

    使用 pylab 在 ipython 中自定义颜色和标记

  23. 23

    展开DataFrame的列,并用自定义值填充其他列的内容

  24. 24

    Woocommerce其他信息选项卡:添加产品自定义字段值

  25. 25

    如何查看SwiftUI可以提供作为自定义字体的Font的其他选项?

  26. 26

    匹配文字样式和自定义首选项的填充

  27. 27

    需要基于其他列中的值在列中填充自定义序列索引,以便使用Mulesoft中的Data Weave进行流处理

  28. 28

    自定义tumblr标签可为边框颜色和边框图像创建主题选项

  29. 29

    通过Sharepoint与其他人共享自定义宏和自定义Excel功能区

热门标签

归档