- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
是否可以手动指示 ggplot 图例中每列显示的因子数?这是一个可重现的示例,展示了我正在尝试做的事情:
#loading libraries
library(ggplot2)
#Creating hypothetical dataframe
services<-data.frame(study=c(0),category=c(0),subcategory=c(0))
services<-services[-1,]
services[1:15,1]<-c(1:15)
services[1:4,2]<-c("Provisioning", "Regulating", "Suporting", "Cultural")
services[5:8,2]<-c("Provisioning", "Regulating", "Suporting", "Cultural")
services[9:10,2]<-c("Provisioning", "Regulating")
services[11:15,2]<-c("Provisioning", "Regulating", "Suporting", "Cultural", "Provisioning")
services[1:4,3]<-c("Water supply", "Climate regulation", "Soil formation", "Recreation")
services[5:8,3]<-c("Fisheries", "Water purification", "Habitat", "Recreation")
services[9:10,3]<-c("Water supply", "Flood regulation")
services[11:15,3]<-c("Agriculture", "Water purification", "Soil formation", "Aesthetics", "Fisheries")
services
#Manually re-ordering subcategory factors by larger categories and by number of occurences in the df (I am also looking for a better way to do this, as it must exist!!)
table(services$subcategory)
services$subcategory <- factor(services$subcategory,
levels=c(#Cultural services
"Recreation", "Aesthetics",
#Provisioning services
"Fisheries", "Water supply", "Agriculture",
#Regulating services
"Water purification", "Climate regulation","Flood regulation",
#Supporting services
"Soil formation", "Habitat"))
#Creating figure
ggplot(services, aes(category, fill=subcategory)) + geom_bar() +
theme(legend.position="right") +
guides(fill=guide_legend(ncol=4, title="Ecosystem Service Sub Categories"))+
xlab("Ecosystem Service Type") +
ylab("Number of times each ecosystem service was evaluated")
The Figure produced by this code
What would like the figure legend to look like instead!
An Even more advanced way I'd love the figure to come out as
虽然this建议,和this一个明白这个想法,他们不会产生我正在寻找的结果。我已经思考这个问题好几个星期了,并且花了几个小时四处寻找解决方案,因为我反对必须在 power point、illustrator 等中手动进行这些调整。无法找到好的答案,我现在转向你伙计们!感谢您的帮助!
最佳答案
哈!虽然 Hadley 确认 ggplot2 本身不可能(请参阅评论中的链接),但有一种非常 hack-y 的方法可以做到这一点,它受到 ggplot2 中相关图例的最大美学数量的限制。
我所做的是创建四个虚拟数据框并在打印窗口外绘制四种不同的美学特征(大小、颜色、alpha、线型)。然后您可以覆盖图例美学,使它们看起来像填充颜色。关闭原始填充图例,瞧!
我知道组的顺序和组内的顺序并不是您想要的,但应该很容易随因子水平等进行更改。
原图
http://i.stack.imgur.com/LXmeo.png
新情节
http://i.imgur.com/1HyNdlV.png
代码
#####################
# Original code
#####################
#loading libraries
library(ggplot2)
#Creating hypothetical dataframe
services<-data.frame(study=c(0),category=c(0),subcategory=c(0))
services<-services[-1,]
services[1:15,1]<-c(1:15)
services[1:4,2]<-c("Provisioning", "Regulating", "Suporting", "Cultural")
services[5:8,2]<-c("Provisioning", "Regulating", "Suporting", "Cultural")
services[9:10,2]<-c("Provisioning", "Regulating")
services[11:15,2]<-c("Provisioning", "Regulating", "Suporting", "Cultural", "Provisioning")
services[1:4,3]<-c("Water supply", "Climate regulation", "Soil formation", "Recreation")
services[5:8,3]<-c("Fisheries", "Water purification", "Habitat", "Recreation")
services[9:10,3]<-c("Water supply", "Flood regulation")
services[11:15,3]<-c("Agriculture", "Water purification", "Soil formation", "Aesthetics", "Fisheries")
services$subcategory <- factor(services$subcategory, levels=c("Recreation", "Aesthetics","Fisheries", "Water supply", "Agriculture","Water purification", "Climate regulation","Flood regulation","Soil formation", "Habitat"))
#####################
# New code
#####################
# Create dummy variables
cultural <- data.frame(Cultural_Services = c("Recreation","Aesthetics"),category = c("Cultural","Cultural"))
provisional <- data.frame(Provisioning_Services = c("Fisheries","Water Supply","Agricultre"), category = c("Provisioning","Provisioning","Provisioning"))
regulating <- data.frame(Regulating_Services = c("Water Purification","Climate Regulation","Flood Regulation"), category = c("Regulating","Regulating","Regulating"))
supporting <- data.frame(Supporting_Services = c("Soil Formation","Soil Formation", "Habitat", "Habitat"), x = c("Regulating","Suporting","Regulating","Suporting"),y=c(-1,-1,-2,-2))
## Create plot
ggplot() +
## Plot the four dummy layer outside of the intended plotting area
geom_point(data = provisional, aes(x = category, y = -1, size = Provisioning_Services)) +
geom_point(data = cultural, aes(x = category, y = -1, color = Cultural_Services)) +
geom_point(data = regulating, aes(x = category, y = -1, alpha = Regulating_Services)) +
geom_line(data = supporting, aes(x = x, y = y, linetype = Supporting_Services)) +
## Add in your real plot goal
geom_bar(data = services, aes(category, fill=subcategory)) +
## Remove the Fill legend
scale_fill_hue(guide="none") +
## Override the guide aesthetics to make them look like fill colors
guides(size = guide_legend(override.aes = list(colour = c("#A3A500","#39B600","#00BF7D"),fill = c(NA,NA,NA), shape = c(15,15,15), size = c(8,8,8)),title="Provisioning Services"),
color = guide_legend(override.aes = list(colour = c("#F8766D","#D89000"), shape = c(15,15), size = c(8,8)),title = "Cultural Services"),
alpha = guide_legend(override.aes = list(colour = c("#00BFC4","#00B0F6","#9590FF"), shape = c(15,15,15),size = c(8,8,8)), title = "Regulating Services"),
linetype = guide_legend(override.aes = list(colour = c("#E76BF3","#FF62BC"), shape = c(15,15), size = c(8,8)),title = "Supporting Services")) +
## Adjust the plot range to hide all the extra layers
ylim(0,5) +
xlab("Ecosystem Service Type") +
ylab("Number of times each ecosystem service was evaluated")
#> Warning: Removed 3 rows containing missing values (geom_point).
#> Warning: Removed 2 rows containing missing values (geom_point).
#> Warning: Removed 3 rows containing missing values (geom_point).
#> geom_path: Each group consist of only one observation. Do you need to adjust the group aesthetic?
关于r - 指定图例列中的因子数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33376750/
我在 visual studio 中使用它,但编译器声称 h1 不能嵌套在 legend 元素中,但浏览器无论如何都可以呈现它,所以我很困惑这是有效的还是不是? Caption
Matplotlib 中的图例是帮助观察者理解图像数据的重要工具。 图例通常包含在图像中,用于解释不同的颜色、形状、标签和其他元素. 1. 主要参数 当不设置图例的参数时,默认的图例是这样的.
mongoDB分页的两种方法 mongoDB的分页查询是通过limit(),skip(),sort()这三个函数组合进行分页查询的 下面这个是我的测试数据 第一种方法 查询第一页的数据:db.te
我的 grafana 仪表板图例中有这些名称: stats.gauges.all.cloudwatch.communicationapi.dynamodb.ca_communicationapi_re
鉴于以下情况: import pandas as pd import matplotlib.pyplot as plt d=pd.DataFrame({'category':['a','a','a',
我收到此错误,请问出了什么问题? plt.legend(handles=[d1, d2]) File "/usr/lib/python3/dist-packages/matplotlib/pypl
这个问题已经有答案了: python matplotlib: label in histogram (1 个回答) 已关闭 5 年前。 我无法向使用 matplotlib.pyplot 创建的直方图添
我想更改我的图例,我必须删除分页并将所有标题放在一两行中。我想更改图标。 现在是这个样子 我想要这样的东西 我输入了 scrollArrows: 'none' 但它不起作用。这是我在 Controll
我正在创建一个文件来读取一定数量的 .wav 文件,每个文件对应一个音符。我正在对它们中的每一个执行 FFT,并将它们全部绘制在同一个图形上。但是,我在正确打印图例时遇到了问题,它将我想要使用的名称分
我正在 ggplot 中处理多个 sf 几何图形,并希望以点、线和正方形(对于多边形)的形式显示图例。然而,geom_sf图例结合了我的几何特征(即结合线和点)如下所示: library(ggplot
我想要 geom_text()标签根据变量采用字体系列。 根据 ggplot2 docs 上的示例(向下滚动到底部),我已经这样做了(与 ggplot 文档示例中的相同): library(ggplo
我正在绘制一个 geom_tile 图,其中每个点都有一个特定的 p-value。 图的绘制方式很好,p-value 限制在图例上。 我想添加到这个图例的是具有这个 p-value 的数据点的数量。
我有以下 data.frame : my.df = data.frame(mean = c(0.045729661,0.030416531,0.043202944,0.025600973,0.0405
我正在绘图中打印 Case-Shiller 索引: structure(list(Date = structure(c(10957, 11048, 11139, 11231, 11323, 1141
我想绘制一个包含 4 个不同值( 1 )的栅格,并带有描述类别的分类文本图例,例如 2但有彩盒: 我试过使用图例,例如: legend( 1,-20,legend = c("land","ocean/
我在 R 中用 ggplot2 制作了这个图 由以下代码绘制: ggplot(mtcars) + geom_smooth(fill='grey', alpha=0.3, span=0.1, aes
我有来自两个不同数据框的数据。我正在尝试为每个数据框创建图例。我知道我可以组合数据框并进行操作,但是由于我的数据源,从两个不同的数据框进行绘图最有意义。 请在下面找到简化的示例。我已经接近了,但传说中
我将 highchart 的图形保存为 svg。 var chart = $('#graphicName').highcharts(); EXPORT_WIDTH = 1000; render_wid
我想将自定义符号设置为图例项。目前我有矩形。我需要带有勾号的矩形(如彩色复选框)。根据文档,我可以自定义元素,例如符号附近的文本。 但如果我将绘图上的所有元素都设置为自定义图像 ( Example )
我有下面的代码,可以生成饼图和图例。有没有办法让表情符号和饼图具有相同的对应颜色,因为目前表情符号是黑色的。另外,我希望删除图例中的方形色 block ,并且术语“男性”和“女性”出现在正确的表情符号
我是一名优秀的程序员,十分优秀!