- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个这样的情节:
这是一个马赛克图,其中一些组上方有一条黑线。我希望那条黑线也出现在图例上。在这个例子中,图例有 6 个级别,并且在级别 2 和 4 的方块上方我想要一条黑线。
我尝试过类似的事情:
How to draw lines outside of plot area in ggplot2但不幸的是,当我调整情节大小时,线条随着情节移动,而不是随着图例移动,它们最终会出现在错误的位置。
这是制作上面图的示例代码。
exampledata<-data.frame(var1Center=c(rep(.2, 6) ,rep(.5,6) ,rep(.8,6)),
var2Height=c(.2,.2,.2,.1,.1,.2, .1,.1,.05,.45,.1,.2, .4,.07,.03,.1,.35,.05),
var1=c(rep("Thing 1", 6), rep("Thing 2", 6), rep("Thing 3", 6)),
var2=c( rep(c("A", "B", "C","D", "E", "F"), 3)),
marginVar1=c(rep(.4,6) ,rep(.2,6), rep(.4,6)))
plotlines<-data.frame(xstart=c(0, 0,.4, .4, .6,.6), xstop=c(.4,.4, .6,.6, 1,1), value=c(.4, .7, .2,.7, .47, .6))
ggplot(exampledata, aes(var1Center, var2Height)) +
geom_bar(stat = "identity", aes(width = marginVar1, fill = var2)) +
scale_x_continuous(breaks=exampledata$var1Center, labels=exampledata$var1, expand=c(0,0))+
theme_bw()+scale_y_continuous(name="Proportion",expand=c(0,0))+
guides(fill = guide_legend(reverse=TRUE))+
theme(panel.border=element_blank(), panel.grid=element_blank())+
theme(axis.text.x=element_text(angle=90, hjust=1, vjust=.3))+
geom_segment(data=plotlines, aes(x=xstart, xend=xstop, y=value, yend=value))
最佳答案
这是一个编辑图例 grob 的解决方案。* 我在下面添加了一个更长的答案,显示了如何检查 grob 结构以帮助找到您可以编辑的属性。
*我只是在学习grobs,所以如果有人有关于如何添加的解决方案linesGrob()
传说,我很想看到它。
简答
p1 <- ggplot()... #Your original plot
gt <- ggplotGrob(pl) #Convert plot to grob
library(gtable); library(gridExtra)
leg <- gtable_filter(gt, "guide-box") #Extract the legend
#Modify the legend by adding a black line that is horizontal y = c(1,1)
#sub-grob 8 is the teal box D
leg$grobs[[1]]$grobs[[1]]$grobs[[8]]$children[[2]]$gp$col <- "black"
leg$grobs[[1]]$grobs[[1]]$grobs[[8]]$children[[2]]$y <- unit(c(1,1), "npc")
#sub-grob 12 is the brown box B
leg$grobs[[1]]$grobs[[1]]$grobs[[12]]$children[[2]]$gp$col <- "black"
leg$grobs[[1]]$grobs[[1]]$grobs[[12]]$children[[2]]$y <- unit(c(1,1), "npc")
#Plot first plot with no legend, then add modified legend.
p2 <- grid.arrange(p1 +theme(legend.position = "none"), leg,
ncol = 2,
widths = unit.c(unit(1, "npc") - sum(leg$width), sum(leg$width)))
$
和
[[]]
分别探索命名和未命名的列表元素。
str
命令显示对象的结构。
str(leg)
#List of 1
#$ grobs :List of 1
#..$ :List of 1
#.. ..$ grobs :List of 1
#.. .. ..$ 99_df28f764d4b38c6ac4aec87e00315c90:List of 20
#.. .. .. ..$ grobs :List of 20 #<--Here is where we can find the legend boxes
#.. .. .. .. ..$ :List of 10
#.. .. .. .. .. ..$ x :Class 'unit' atomic [1:1] 0.5
#.. .. .. .. .. .. .. ..- attr(*, "unit")= chr "npc"
#.. (snip)
#'leg' has a named element 'grobs' with an unnamed list (' :List of 1').
#The first element of this unnamed list has a named sub-element 'grobs'.
# which itself contains an unnamed list.
#The next command goes down these branches of 'leg' to the sub-elements.
leg$grobs[[1]]$grobs[[1]] #Elements of the legend are shown here
#TableGrob (10 x 6) "layout": 20 grobs
#z cells name grob
#1 1 ( 1-10, 1- 6) background rect[legend.background.rect.171]
#2 2 ( 2- 2, 2- 5) title text[guide.title.text.127]
#3 3 ( 4- 4, 2- 2) key-3-1-bg rect[legend.key.rect.141]
#4 4 ( 4- 4, 2- 2) key-3-1-1 gTree[GRID.gTree.142]
#5 5 ( 5- 5, 2- 2) key-4-1-bg rect[legend.key.rect.146]
#6 6 ( 5- 5, 2- 2) key-4-1-1 gTree[GRID.gTree.147]
#7 7 ( 6- 6, 2- 2) key-5-1-bg rect[legend.key.rect.151]
#8 8 ( 6- 6, 2- 2) key-5-1-1 gTree[GRID.gTree.152]
#9 9 ( 7- 7, 2- 2) key-6-1-bg rect[legend.key.rect.156]
#10 10 ( 7- 7, 2- 2) key-6-1-1 gTree[GRID.gTree.157]
#11 11 ( 8- 8, 2- 2) key-7-1-bg rect[legend.key.rect.161]
#12 12 ( 8- 8, 2- 2) key-7-1-1 gTree[GRID.gTree.162]
#13 13 ( 9- 9, 2- 2) key-8-1-bg rect[legend.key.rect.166]
#14 14 ( 9- 9, 2- 2) key-8-1-1 gTree[GRID.gTree.167]
#15 15 ( 4- 4, 4- 4) label-3-3 text[guide.label.text.129]
#16 16 ( 5- 5, 4- 4) label-4-3 text[guide.label.text.131]
#17 17 ( 6- 6, 4- 4) label-5-3 text[guide.label.text.133]
#18 18 ( 7- 7, 4- 4) label-6-3 text[guide.label.text.135]
#19 19 ( 8- 8, 4- 4) label-7-3 text[guide.label.text.137]
#20 20 ( 9- 9, 4- 4) label-8-3 text[guide.label.text.139]
#This table shows the structure of the legened,
# where cells indicate (min.X-max.X, min.Y-max.Y).
#The 8th element is one of the color keys as a gTree grob.
#Examining this legend key box in more detail:
leg$grobs[[1]]$grobs[[1]]$grobs[[8]]$children
#(rect[GRID.rect.153], lines[GRID.lines.154])
#'children' is composed 2 sub-elements (in an unnamed list): rectangle and lines.
#Exploring second sub-element (lines):
#Line properties
str(leg$grobs[[1]]$grobs[[1]]$grobs[[8]]$children[[2]])
#List of 6
#$ x :Class 'unit' atomic [1:2] 0 1
#.. ..- attr(*, "unit")= chr "npc"
#.. ..- attr(*, "valid.unit")= int 0
#$ y :Class 'unit' atomic [1:2] 0 1
#.. ..- attr(*, "unit")= chr "npc"
#.. ..- attr(*, "valid.unit")= int 0
#$ arrow: NULL
#$ name : chr "GRID.lines.154"
#$ gp :List of 4
#..$ col : logi NA
#..$ lwd : num 1.42
#..$ lineend: chr "butt"
#..$ lty : num 1
#..- attr(*, "class")= chr "gpar"
#$ vp : NULL
#- attr(*, "class")= chr [1:3] "lines" "grob" "gDesc"
#Here we see the line goes left-right with $x = c(0,1) and top bottom with $y = c(0,1).
# i.e. a bottom-left to top-right diagonal line.
#This line is not actually plotted because it has no color: $gp$col = NA
grid.draw(leg) #Show the legend
#y and gp$col are changed as noted above.
关于r - 在ggplot2中的图例的某些级别之间添加线条,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34648520/
我正在尝试创建一些文本标题,这些标题的一侧有一条线,该线基于文本的宽度是动态的。 例子: 我猜我需要在标题上做一些背景颜色(例如白色)来伪造它,然后使用 :before伪类,但到目前为止我还没有成功。
如何在 Qt 中使用 QVector 初始化多边形来创建一个开放多边形? QPolygonF 将始终关闭多边形并将最后一个点与第一个点连接起来。 谢谢你的帮助 [编辑] 在QGraphicsScene
如何获取数组中道路的几何形状(线条/绘图)? 可能吗? 谢谢! [抱歉我的英语不好] 最佳答案 目前 Google map 无法实现此操作。开源网络服务,如 OpenStreetMap能够返回数据库中
当我绘制具有透明纹理的平面(例如房屋的 window )时,我看到了不应该出现的线条或三角形。我该如何解决这个问题? (来源:troll.ws) 这是我用来绘制一个窗口的方法。我暂时启用混合以使窗口透
在 WPF 中,有没有一种方法可以修改从 Dash-Dot 序列绘制任何路径的方式?假设我想为我正在绘制的任何路径或绘图路径本身上的小三角形、波浪等绘制一条三重线。我已经尝试过画笔,但它不会遵循路径。
I have created an interactive map that when areas are selected then the related content should show/
我想在圆圈悬停时显示上下文菜单,以向用户显示一些选择,并在单击时执行一些操作,但我无法做到这一点。 如何在鼠标悬停事件上显示带有拉斐尔元素(例如圆圈、线条)的上下文菜单,并在选择特定菜单项时执行某些操
已解决。 我之前有一个问题,但它发布得非常糟糕,所以根据更好的规则,这里再次出现。 我想创建某种样式的图表,例如此图像: 。 它基于物理定律,Snell's Law 。到目前为止,我已经成功地使用基本
我正在绘制一些具有相同笔划的路径,但有一些明显的重叠(动态创建和更新树)。在重叠区域,笔划看起来与非重叠区域(- 参见 b)不同(更暗和更粗 - 参见 a)。同样的效果对于不同的笔触颜色也很明显。 代
我正在使用 python 和 opencv。我的目标是检测用树莓派相机拍摄的图像中的“X”形碎片。该项目是我们有预印的井字棋板,并且每次在板上放置新棋子(带有印章)时都必须对板进行成像。然后输出说明棋
设置图像样式有两种方法,一种是全局修改,一种只针对一幅图片有效。 全局修改 a<-c(1:10)#全局修改old_par<-par(no.readonly=TRUE)
Matplotlib 是 Python 的绘图库。 它可与 NumPy 一起使用,提供了一种有效的 MatLab 开源替代方案。 它也可以和图形工具包一起使用,如 PyQt 和 wxPython。
我创建了一个脚本来读取和绘制 .txt 文件及其内容(数字/值)。每个 .txt 文件位于不同的文件夹中。每个文件夹依次代表数据的一个主题。 这段代码工作正常。 Python 读取每个单独的 .txt
对于提交的最终文章,我被要求更新我的数据,以便它们符合以下规范: 轴线为 0.25 毫米 轴线周围,刻度线朝内 数据线为 0.5 毫米 字体为10pt 人物宽度应为 80 或 169 毫米 必须为 3
当尝试使用 D3DPT_LINELIST 在 3D 空间中绘制一条线时,Direct3D 给我一个关于无效顶点声明的错误,说它不能转换为 FVF .我使用的顶点声明和着色器/流设置与我的 D3DPT_
我如何使用 CSS 为 SVG“线”元素创建绘制动画。我想在滚动上画线,效果流畅。有人有什么想法吗?我试着搜索这个,但我找不到线元素的这种效果。这是我的 html 和 svg:
有什么方法可以用 CSS 来设置 SVG 行的样式吗?我试过添加。我想稍后用 JQuery 添加类 onclick。这将添加 class,然后更改描边颜色。 .black { fill: blac
我创建了一个受“站点地图”启发的菜单,它使用 svgs 连接菜单中的每个元素。目前 svg 是静态的。但是我相信有可能使这些吸引进来? 我有一个更复杂的问题,我只希望在容器 ul 可见时绘制线条。 当
这个问题在这里已经有了答案: How to draw a path smoothly from start point to end point in D3.js (1 个回答) 关闭 6 年前。
我在代码中的 HTML5 Canvas 元素上绘制了许多 1px 线。绘图代码大致如下所示,本例中的 transform 变量使用 d3-zoom 设置。 instructions.f32 是一个 F
我是一名优秀的程序员,十分优秀!