我正在尝试使用ggvis中的ggplot2中的数字来复制热图.ggplot2版本是
library(ggplot2)
hec <- as.data.frame(xtabs(Freq ~ Hair + Eye, HairEyeColor))
ggplot(hec, aes(Hair, Eye)) +
geom_tile(aes(fill = Freq)) +
geom_text(aes(label = Freq),colour="white")
Run Code Online (Sandbox Code Playgroud)
它看起来像那样

我在ggvis中的版本是
hec%>%
ggvis(~Hair, ~Eye, fill=~Freq)%>%
layer_rects(width = band(), height = band()) %>%
layer_text(text:=~Freq,fontSize := 20, fill:="white",baseline:="top",align:="center") %>%
scale_nominal("x", padding = 0, points = FALSE) %>%
scale_nominal("y", padding = 0, points = FALSE)
Run Code Online (Sandbox Code Playgroud)
结果并不完美

我试图通过手动添加边距来修复数字对齐,但这种情况不可调整大小.
有任何想法吗?
我正在尝试使用ggvis为2014赛季创建一个NFL力量表.这些数据来自FootballOutsiders.com,后来我将制作一个Shiny应用程序,在该季节更新时会自动从网站上删除数据.下面的例子非常接近,但我想做一些修改.我想要...
在图表的每个单元格中包含"防御"的数值,因此可视化类似于原始的"df"数据框.
自定义色标,使正值越来越橙色,负值越来越蓝(即更负 - 更蓝).
#2的替代方案可以是从橙色到蓝色的渐变,并且当"防御"的值接近零时,使不透明度降低到0.5.
能够选择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, …Run Code Online (Sandbox Code Playgroud) 我有多个具有多个段的路径.如何用相同的颜色为每条路径的第N段着色?
例如:
require(dplyr)
require(ggvis)
df <- data.frame(x = runif(10,0,10), y = runif(10,0,10),
group=c(rep(5,5),rep(10,5)), colorIdx=rep(c(1:5), 2))
df$group = factor(df$group)
color_fun = colorRampPalette(c("yellow","blue"),5)
myColors = color_fun(5)
df$color = myColors[df$colorIdx]
df %>% group_by(group) %>%
ggvis(~x, ~y, strokeWidth:=~group) %>% layer_paths(stroke :=~color)
Run Code Online (Sandbox Code Playgroud)
产生的路径是单色的 - 我希望它们从黄色到蓝色.

使用ggplot2,可以通过以下方式完成:
require(ggplot2)
ggplot(df, aes(x=x, y=y, group=group, colour=colorIdx, size=group)) + geom_path() +
scale_colour_gradient("", low="#FED863", high="#2A6EBB", limits=c(1,4))
Run Code Online (Sandbox Code Playgroud)

我正在尝试使用ggvis重现ggplot2图.该图旨在表示点的坐标(来自对应分析)以及它们的簇(hclust)标准色散椭圆.
我想基于多个数据集制作一个包含多个图层的ggvis图.因此,功能/管道方法阻止我分组其中一个层而不是另一个.
整个(简要评论)代码在那里:https://gist.github.com/RCura/a135446cda079f4fbc10
这是创建数据的代码:
a <- rnorm(n = 100, mean = 50, sd = 5)
b <- rnorm(n = 100, mean = 50, sd = 5)
c <- rnorm(n = 100, mean = 50, sd = 5)
mydf <- data.frame(A = a, B = b, C = c, row.names = c(1:100))
library(ade4)
myCA <- dudi.coa(df = mydf,scannf = FALSE, nf = 2)
myDist <- dist.dudi(myCA, amongrow = TRUE)
myClust <- hclust(d = myDist, method = …Run Code Online (Sandbox Code Playgroud) 我正在尝试使用ggvis进行交互式缩放,尤其是使用画笔进行缩放.从https://github.com/rstudio/ggvis/issues/143来看,我认为这应该有效.
我有以下闪亮和ggvis代码(完全可重现):
## ui.R
library(ggvis)
shinyUI(fluidRow(
uiOutput('ui_plot1'),
ggvisOutput("graph_plot1")
))
## server.R
shinyServer(function(input, output, session) {
domains <- reactiveValues(x = c(NA, NA), y = c(NA, NA))
zoom_brush = function(items, session, page_loc, plot_loc, ...) {
domains$x = c(200, 400)
}
plot = reactive({
mtcars %>%
ggvis(~disp, ~mpg) %>%
layer_points() %>%
scale_numeric('x', domain = domains$x, clamp = TRUE) %>%
handle_brush(zoom_brush)
}) %>% bind_shiny('graph_plot1', 'ui_plot1')
})
Run Code Online (Sandbox Code Playgroud)
因此,只要绘制画笔,就会改变反应域,这反过来会改变x的域scale_numeric.如果仍有以下挑战:
zoom_brush我得到画笔的坐标,但是在图的像素坐标系中不是域坐标系.如何将像素转换为域规模?在d3中我可以简单地使用范围来缩放变换函数,但是我没有看到这些在ggvis中是如何可用的(通过vega).on_move事件处理程序.在这种情况下,我只想在画笔完成时触发缩放,因此刷子上下文中的onmouseup事件.我担心现在根本不可能这样做?我运行以下R版本和软件包版本.
> sessionInfo()
R …Run Code Online (Sandbox Code Playgroud) 在下面的例子,我有一个互动的闪亮ggvis情节,但我添加了一个long列,它是一个长字符串,由于某种原因,我悬停弹出节目wt和mpg,但不显示long.
此外,如果图例中的元素列表太长,它们将隐藏在图的右下角.有没有办法在图例中的几列中堆叠这些?
有任何想法吗?
# ui.R
library(ggvis)
shinyUI(pageWithSidebar(
div(),
sidebarPanel(
sliderInput("n", "Number of points", min = 1, max = nrow(mtcars),
value = 10, step = 1),
uiOutput("plot_ui")
),
mainPanel(
ggvisOutput("plot"),
tableOutput("mtc_table")
)
))
# server.R
library(shiny)
library(ggvis)
shinyServer(function(input, output, session) {
# A reactive subset of mtcars
mtc <- reactive({
data = mtcars[1:input$n, ]
data$long = as.character(paste0("A car with ",data$cyl," cylinders and ",data$gear," gears and ",data$carb, " carburators"))
data
})
# A simple …Run Code Online (Sandbox Code Playgroud) 我希望我的ggvis图有一个特定的高度和宽度.
%>% set_options(height = 480, width = 480)仅添加实际绘图的大小,即带有数据的网格为480x480.我希望能够指定整个图像的尺寸,包括轴,刻度和标签.
有什么建议?
编辑:一个完整的例子:
library(ggvis)
mtcars %>%
ggvis(~hp,~wt) %>%
layer_points() %>%
set_options(height = 480, width = 480)
Run Code Online (Sandbox Code Playgroud) 我有一个关于控制ggvis中数据点的颜色的问题.
我有一个数据框,我正在以多种方式过滤(在一个闪亮的应用程序内,如果它很重要).这导致通常不通过存在于得到的滤波数据帧中来观察组I着色数据点.这显然导致出现在不同图中的不同颜色,这是令人困惑的.
这是一个非常接近的例子:
set.seed(101)
dfvis <- data.frame(x = runif(20), y = runif(20), mygroup = LETTERS[1:5])
dfvis
dfvis %>%
ggvis(x= ~x, y= ~y) %>%
layer_points(fill = ~factor(mygroup))
Run Code Online (Sandbox Code Playgroud)
让我们过滤一组 -
dfvis <- dfvis %>% filter(mygroup!="A")
dfvis %>%
ggvis(x= ~x, y= ~y) %>%
layer_points(fill = ~factor(mygroup))
Run Code Online (Sandbox Code Playgroud)

这里,"B"现在是蓝色,所有其他组在颜色顺序方面向上移动一个.
有没有办法,当在同一个df上做多个过滤器时,总是为每个因子/组的级别确保相同的颜色?
之前在ggplot中工作的一个技巧是在每个因子级别的数据帧末尾添加一个NA观测值.乍一看,这可以正常工作,因为颜色按照正确的顺序返回,但请注意左上角的流氓数据点!
dfvis1 <- rbind(dfvis, data.frame(x=NA, y=NA, mygroup="A"))
dfvis1 %>%
ggvis(x= ~x, y= ~y) %>%
layer_points(fill = ~factor(mygroup))
Run Code Online (Sandbox Code Playgroud)

所有帮助赞赏.
嗨,我对ggvis中的音阶有点困惑.我正在尝试做两件事:一件是对数刻度(相当于plot()中的log ="x").我也在寻找相当于xlim = c()的东西.在这两种情况下,下面的代码都没有给出预期的结果.
# install.packages("ggvis", dependencies = TRUE)
library(ggvis)
df <- data.frame(a=c(1, 2, 3, 1000, 10000), b=c(0.1069, 0.0278, 0.0860, 15.5640, 30.1745))
df %>% ggvis(~a, ~b)
df %>% ggvis(~a, ~b) %>% scale_numeric("x", trans="log")
Run Code Online (Sandbox Code Playgroud)
请注意,使用trans ="log"时,所有点都位于绘图的左侧,并且刻度消失.
接下来,我想将绘图限制为某些值.我可以对数据框进行子集化,但我希望从plot()获得相当于xlim的数据.
df %>% ggvis(~a, ~b) %>% scale_numeric("x", trans="linear", domain=c(10, 40))
Run Code Online (Sandbox Code Playgroud)
这甚至给出了更奇怪的结果,所以我猜我可能会错误解释域的作用.
谢谢你的帮助!
ggvis用户创建的,用户可以从中选择学生姓名inputSelect.在图中,我想要更改特定分数范围内的背景颜色.例如,在每个图中,分数高于80或低于50的绘图背景颜色用蓝色突出显示(参见附图).我试图添加图层并使用绘制矩形到情节layer_rects(),但问题是如果选择不同的学生,x轴的值会改变.任何人之前做过这个或任何想法?如果我只想要那个得分范围内的积分弹出,是否有可能?非常感谢!
library(shiny)
library(ggvis)
df <- data.frame(Student = c("a","a","a","a","a","b","b","b","b","b","c","c","c","c"),
year = c(seq(2001,2005,1),seq(2010,2014,1),seq(2012,2015,1)),
score = runif(14,min = 50,max = 100), stringsAsFactors=F)
ui = (fluidPage(
sidebarLayout(
sidebarPanel(
selectInput("stu","Choose Student",
choice = unique(df$Student))
),
mainPanel(ggvisOutput("plot"))
)
)
)
server = function(input,output,session){
dataInput = reactive({
gg = df[which(df$Student == input$stu),]
})
vis = reactive({
data = dataInput()
data %>%
ggvis(x = ~year, y = ~score) %>%
scale_numeric("y",domain = c(40,120))%>%
layer_lines()
})
vis %>% bind_shiny("plot")
}
runApp(list(ui = …Run Code Online (Sandbox Code Playgroud)