- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试用不同的颜色填充下图中的 3 个三角形。
data = data.frame(x=c(125), y=c(220)) #this data is just to be able to use gplot to draw figures
ggplot(data, aes(x = x, y = y)) +
xlim(0,250) +
ylim(-250, 0) +
geom_curve(x = 33, xend = 223, y = -100, yend = -100, curvature = -.65) +
geom_segment(x=128, xend = 33, y=-208, yend = -100) +
geom_segment(x=128, xend = 223, y=-208, yend = -100) +
geom_segment(x=128, xend = 159.67, y=-208, yend = -45) +
geom_segment(x=128, xend = 96.33, y=-208, yend = -45) +
coord_fixed()
我该怎么做?
最佳答案
简短的回答:这是一个非常邪恶的黑客行为。
现在让我们详细说明一下:如 especially in this GitHub thread 中所述,无法访问由 geom_curve
生成的坐标(它使用 CurveGrob
进行绘图,并且“这些值都是在绘制时计算的”[@thomasp85])。其“绘制时计算行为”的一个效果如下所示 - 如果您添加或不添加 coord_plot,它会产生影响。这与geom_spline
不同:添加coord_fixed
不会改变坐标。
请参见下面的图一和图二:红色曲线是使用 geom_curve
创建的 - 它与 geom_segment 线失去了联系...
@thomasp85 在 GitHub 线程中建议可以使用他的包 ggforce 来代替。现在,要真正控制曲率,需要使用 geom_bspline 并调整曲率。
一旦找到曲率,就可以使用 ggplot_build 对象中的坐标。我们可以根据这些坐标计算多边形(这也不是很简单,因为需要创建切割并为正确的“边缘”添加点)。见下文。
library(tidyverse)
library(ggforce)
mydata = data.frame(x = 128, xend = c(33, 223, 159.67, 96.33), y = -208, yend = c(-100,-100,-45,-45))
#for spline control points.
my_spline <- data.frame(x = c(33, 128, 223), y = c(-100, 24,-100))
接下来我演示“绘制时计算(红色曲线)”和“直接计算”之间的区别:
使用coord_fixed
红色和黑色曲线都接触线段
ggplot(mydata) +
geom_curve(aes(x = 33, xend = 223, y = -100, yend = -100), curvature = -.65, color = 'red') +
geom_segment(aes(x = x, xend = xend, y = y, yend = yend)) +
geom_bspline(data = my_spline, aes(x, y )) +
coord_fixed()
没有coord_fixed
红色曲线不接触线段,但黑色曲线仍然接触
ggplot(mydata) +
geom_curve(aes(x = 33, xend = 223, y = -100, yend = -100), curvature = -.65, color = 'red') +
geom_segment(aes(x = x, xend = xend, y = y, yend = yend)) +
geom_bspline(data = my_spline, aes(x, y ))
# Final hack
# Get x/y coordinates from ggplot_build
p <- ggplot(mydata) +
geom_bspline(data = my_spline, aes(x, y ))
pb <- ggplot_build(p)$data[[1]]
#create groups for fill
data_polygon <- data.frame(x = pb[['x']], y = pb[['y']]) %>%
mutate(cut_poly = cut(x, c(-Inf, 96.33, 159.67, Inf), labels = letters[1:3]))
#add corner points - repeat extremes from b, otherwise there will be a gap
data_add <- data_polygon %>%
filter(cut_poly == 'b') %>%
slice(which.min(x), which.max(x)) %>%
mutate(cut_poly = letters[c(1,3)]) %>%
bind_rows(data.frame(x = 128, y = -208, cut_poly = letters[1:3], stringsAsFactors = FALSE)) %>%
arrange(x) #important to arrange, otherwise you get irregular polygons
data_plot <- rbind(data_polygon,data_add)
ggplot(data_plot) +
geom_polygon(aes(x, y, fill = cut_poly), color = 'black')
由reprex package于2019年12月5日创建(v0.3.0)
关于r - 如何填充由直线和曲线创建的几何图形?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59113375/
除了绘制各类分析图形(比如柱状图,折线图,饼图等等)以外, matplotlib 也可以在画布上任意绘制各类几何图形。 这对于计算机图形学、几何算法和计算机辅助设计等领域非常重要。 m
我的问题的背景是,我有一堆几何图形(数量巨大,认为映射到更大的区域)分布在多个 wpf 几何实例中(最初它们是 PathGeometry,但为了减少内存使用量,我对它们进行了预处理并在加载期间创建 S
我正在研究一个传感器网格,它基于(目前)没有比相机更复杂的东西。将来,我希望包括对基于 Kinect 的设备以及其他传感器设备(即麦克风、 radio 接收器等)的支持,但目前,我正在努力启动它。 我
我想制作一系列具有相同颜色的 geom_bar 的图表。我更喜欢偷懒,因此我希望避免每次都指定fill="blue"。 如何根据最新版本的 ggplot2 修改 geom 的默认值或创建具有修改后默认
有没有办法使用准备好的语句将 GIS 数据插入 mysql 数据库(使用 PHP/PDO)? 这是失败的: $stmt = $sql->prepare("INSERT INTO geo SET loc
当用鼠标拖动小部件时,宽度会自由移动(带框架的小部件)。我想要实现的是让移动的小部件捕捉到某些区域,例如屏幕的其他小部件或边框。例如,Winamp 中的播放列表窗口与主窗口对齐。如何实现这种行为? 最
我需要创建一个简单的应用程序,它可以在 C# 中显示来自 Oracle Spatial 的几何图形。这些几何图形从 AutoCAD Map 3D 2010 导出到 Oracle Spatial。 我需
根据一组定义路线的坐标,我想绘制一个模拟该轨道的理论高速公路的几何图形,给定任意米宽(例如 20 米) 我不知道 GeoTools 是否提供了用这样的输入构造一个 Geometry 的工具,所以我最初
我们已经进行了开发智能手机/平板电脑应用程序(最好是 Android 应用程序)的需求可行性研究,该应用程序应该能够执行以下操作 首先,用户会使用带有摄像头的平板电脑或智能手机行走,在建筑物内部绘制整
我正在尝试使用 Three.js STLLoader 从 STL 文件读取并缓存几何图形。我使用事件循环回调来获取数据(类似于 STLLoader 示例)。我打算存储在外部变量“cgeom”中。但是,
我正在尝试使用带获取值的 ST_Makepoint 进行插入,但我遇到了 500 错误。 这是我的 php 代码: prepare("INSERT INTO table(id_a, id_b, geo
我试图让我的几何图形在 SceneKit 中看起来平坦而不平滑。正如您在图像中看到的,在 SceneKit 中,绿色球体默认具有平滑的阴影。我想要的是另一张图片中的扁平“外观”,上面写着“扁平”。 我
我似乎无法直接将 mssql 空间字段导入到 geopandas 中。我可以使用 Pymssql 将普通的 mssql 表导入 pandas,不会出现任何问题,但我无法找到将空间字段导入形状几何的方法
我目前正在将 STL 对象加载到我的 Three.js 场景中。 出于某种原因,渲染/动画需要大量 GPU 资源,从而减慢整个场景的速度,因此我一直在考虑替代方案。 由于它是一个非常简单的形状,我想我
我正在使用 QT 并尝试使用 QGraphicsView 和 QGraphicsScene 绘制图表..我不想要任何额外的依赖项,这就是我不使用 QWT 的原因。当我绘制我的数据时,此刻我使用 sce
新式 sf R 包使其非常容易处理 R中的地理数据,以及ggplot2的开发版本有一个新的geom_sf()用于绘制科幻风格地理数据的图层。 内sf处理数据的范式,是否可以映射 ggplot 美学到
这是一个简单的问题,我还没有找到明确的答案。在 ST_GeomFromGeoJSON 的规范页面上,它指出: ST_GeomFromGeoJSON works only for JSON Geomet
我需要找到一种方法来获取适合传递给某些 X 的几何体窗口命令的 -geometry 选项,以便保证覆盖所有不与任何 GNOME 重叠的 X 根窗口自己管理(例如,GNOME 面板窗口)。这与xwini
我使用sequelize-auto提取了一些PostGis图层的模型,给出: module.exports = function(sequelize, DataTypes) { return sequ
我是一名优秀的程序员,十分优秀!