我正在尝试基于四个值创建散点图。我的数据只是价格列表(BASIC,VALUE,DELUXE,ULTIMATE)。我想将VALUE和DELUXE作为两个轴(x,y),然后使点的大小和颜色代表其他两列的数据。
很难建立一个可重复的示例,因为当我列出许多值时,这只是一个问题。我大约有300个点,带有大约30个不同的颜色/值标签(用于ULTIMATE,和20个大小/值标签(对于BASIC)
> gg <- ggplot(d, aes(x=DELUXE_PRICE, y=VALUE_PRICE,color=ULTIMATE_PRICE,size=BASIC_PRICE)) + geom_point(alpha = 1)
> plot(gg)
我的代码做得很好,并在侧面列出了颜色/大小以及相应的值。很好,但是我想更改其显示方式,以免中断显示。我希望能够将这些值“包装”到更多列中,或缩小这些显示尺寸以适合它们。
当前,这会在绘图区域的右侧三列中列出“ ULTIMATE”,但会切掉标签的顶部(它延伸到绘图区域上方)
这会在绘图区域的右侧,ULTIMATE标签下方的一栏中列出BASIC大小/值标签,因此在底部将其切除一半左右。
我可以通过以下方法增加利润率:
> gg <- ggplot(d, aes(x=DELUXE_PRICE, y=VALUE_PRICE,color=ULTIMATE_PRICE,size=BASIC_PRICE)) + geom_point(alpha = 1) +theme(plot.margin = unit(c(4,2,4,2), "cm"))
> plot(gg)
这会得到更多,但是会产生很多白色区域和较小的视图。我希望能够仅在必要时增加右边距,然后将标签“包裹”在延伸到右边的更多列中。 (即,将ULTIMATE放到4列而不是3列中,然后将BASIC放到3-4列而不是1列中-这样它们会更短并且不会超出绘图区域。
答案 0 :(得分:0)
我发现有些内置功能可以执行所需的操作。它在于在图上添加一个guides()参数,指定我要处理的是颜色还是大小图例,并使用“ ncol =”指定列数(您也可以指定行)。给它一个订单排名也可以对它们进行排名,所以我得到的代码是:
> gg <- ggplot(Table, aes(x=DELUXE_PRICE, y=VALUE_PRICE,color=ULTIMATE_PRICE,size=BASIC_PRICE)) + geom_point(alpha = 1) + guides(color = guide_legend(order = 0,ncol = 4),size = guide_legend(order = 1,ncol = 4))