R 如何向ggplot2中的图例添加自定义比例?

R 如何向ggplot2中的图例添加自定义比例?,r,colors,ggplot2,legend,R,Colors,Ggplot2,Legend,我试图可视化一个贝叶斯网络,由于线条的密度,我决定使用亮度梯度来可视化边缘的方向(暗->光)。然而,正因为如此,我不得不在geom\u path()语句中手动定义颜色,并使用scale\u fill\u identity()而不是通常使用的scale\u fill\u gradient()。我当前的图表如下所示: 我想做的是添加一个渐变比例,从蓝色到黄色,带有用户定义的值,这样有人可以看到一个图例,并告诉所有链接的权重是多少(它们都是无单位的)。饱和度和亮度都与原始颜色不同,但色调相同 编辑:

我试图可视化一个贝叶斯网络,由于线条的密度,我决定使用亮度梯度来可视化边缘的方向(暗->光)。然而,正因为如此,我不得不在
geom\u path()
语句中手动定义颜色,并使用
scale\u fill\u identity()
而不是通常使用的
scale\u fill\u gradient()
。我当前的图表如下所示:

我想做的是添加一个渐变比例,从蓝色到黄色,带有用户定义的值,这样有人可以看到一个图例,并告诉所有链接的权重是多少(它们都是无单位的)。饱和度和亮度都与原始颜色不同,但色调相同

编辑:以下是您可以使用的示例:

   ggplot(data.frame(x=1),aes(x=x,y=1,color='red',fill='blue'))+
scale_color_identity()+scale_fill_identity()+geom_bar(stat='identity')
如何在上面插入任意颜色渐变比例

编辑2:我找到了一种迂回的方法,通过手动插入其他绘图中的图例来实现这一点:


有没有比这更简单的方法?

要使用
ggplot
轻松添加图例,您需要一个映射。谢谢你的样品

ggplot(data.frame(x=1),aes(x=x,y=1,color="boxcol",fill=1))+
  scale_fill_gradient(name="Fill")+
  scale_colour_manual(name="Color",values=c(boxcol="blue"))+
  geom_bar(stat='identity')

将为颜色和填充添加图例。假设这个例子准确地描述了您实际正在做的事情,那么这应该是可行的。与在
geom_path
中指定文字颜色值不同,您应该对它们进行编码。

请注意,问题很简单:是否可以添加图例和比例,而无需创建任何映射元素?我已经使用了填充框和缩放颜色标识线。这意味着我不能使用贴图元素添加另一个基于颜色的比例。
辅助线(color=colorbar(…)
选项不起作用,因为没有任何类型的刻度的输入参数,默认情况下,它需要一个连续变量。制作图表需要200多行代码,但我要问的是如何设置自定义比例。我输入了一个基本的例子,但它看起来很简单。我必须明确定义颜色的原因是因为我需要为我指定的线提供亮度渐变。我不知道RGB或HSV的美学(后者在许多情况下肯定有用)。另一种方法是只使用尺寸,这很难区分所涉及的距离,或者使用箭头,在这样的图形上很难读取箭头。我已经找到了一个使用GROB的解决方法,但这似乎是一个丑陋的解决方案。我不明白为什么不能使用
缩放\u颜色\u渐变n
和手动设置的所有颜色列表?如果已经创建了自己的渐变,请将其插入。输入256种左右的颜色,以便在所需的颜色空间中进行平滑过渡。如果您能为实际问题创建一个更真实的示例,那么给出具体建议就更容易了。它不一定是(也不应该是)您的全部数据和200行代码。它应该是最小的,但足以说明问题。我需要一个二维颜色空间(色调和亮度)。我已经使用了颜色映射(identity)通过手动分配颜色来实现这一点,填充映射将用于节点。如果我使用渐变,我将不得不为渐变创建大量端点,并为我的所有边创建一个非常奇怪的映射,以说明亮度范围。