我想根据特定字段的值指定点的大小,但是我希望能够跨越一系列独立生成的图表来调整大小。
基本上我希望可以说X单位的值应该以大小为Y的点显示。
下面是一个例子
library(ggplot2)
df_1 <- data.frame(x=c(1:3),y=rep(1,3),size=10*c(1:3))
df_2 <- data.frame(x=c(1:3),y=rep(1,3),size=100*c(1:3))
df_1_plot <- ggplot(df_1,aes(x=x,y=y,size=size)) +
geom_point()
df_2_plot <- ggplot(df_2,aes(x=x,y=y,size=size)) +
geom_point()
df_1_plot将生成与df_2_plot不同比例的图表,但df_2尺寸字段是df_1&#39;的尺寸的10倍:
我正在寻找df_2_plot中的磅值比df_1_plot中的点大10倍。
答案 0 :(得分:1)
实现此目的的一种方法是手动调整比例,使用// The below two lines will split the columns as well as trim the DBOULE QUOTES around values but NOT within them
string trimmedLine = line.Trim(new char[] { '\"' });
List<string> values = trimmedLine.Split(new string[] { "\",\"" }, StringSplitOptions.None).ToList();
将其固定到原始数据帧比例以及指定的比例常量 - 任何常量都应该有效,尽管使用scale_size_continuous()
保持尺寸更易于管理。这样,每个点的大小都与相同的任意常数相关(在本例中为min(df_1$size)
)
代码看起来像是:
min(df_1$size)
然而,正如使用ggplot(df_1,aes(x=x,y=y,size=size)) +
geom_point() +
scale_size_continuous(range = c(min(df_1$size)/min(df_1$size), max(df_1$size)/min(df_1$size)))
ggplot(df_2,aes(x=x,y=y,size=size)) +
geom_point() +
scale_size_continuous(range = c(min(df_2$size)/min(df_1$size), max(df_2$size)/min(df_1$size)))
而不是scale_size_identity()
提到的lukeA以更优雅的方式实现了相同的结果。