0

如果我的问题太简单或太愚蠢,请原谅我,我刚刚开始研究 R。我已经搜索并尝试了很多次,但我无法拥有多个标签。这就是我的代码的样子:

datato<-read.table("forS.txt",header=TRUE)

g<-ggplot(datato)

g+
geom_point(aes(x=Point1,y=Alphabets,size=D1),fill="cyan",shape=21)+
geom_point(aes(x=Point2,y=Alphabets,size=D2),fill="gold2",shape=21)+
geom_point(aes(x=Point3,y=Alphabets,size=D3),fill="lightpink4",shape=21)+
scale_size(range = c(0, 20),name="") + theme(axis.text.x = element_text(size =    15,face="bold"),axis.text.y = element_text(size = 15,face="bold"))+   
xlab("Numbers") + ylab("Alphabets Freq")+ggtitle("Bubble Chart")+
scale_x_continuous(limits = c(1, 15))+
scale_shape_manual(values=1:3, labels = c("DDD", "EEE", "FFF"))

我正在用 D2 和 D3 来绘制 D1 和字母等。我需要一个漂亮的气泡图。但最后,我得到lightpink4了右手尺寸的标签,默认情况下它会覆盖以前的标签。但我想在右侧显示青色用于 D1,gold2 用于 D2,lightpink4 用于 D3。我不知道如何使用:scale_shape_manual

请帮助我理解这一点。

 Alphabets  D1  D2  D3  Point1  Point2  Point3
A   0.094   0.073   0.11    1   2   3


B   0.019   0.08    0.09    1   2   3

C   0.086   0.059   0.05    1   2   3

D   0.03    0.021   0.09    1   2   3
4

1 回答 1

1
  • 将您的数据重塑为长格式。那更有用ggplot2
  • 你想要colour而不是fill
  • 你想要scale_colour_manual而不是scale_shape_manual

这应该有效:

library(ggplot2)
library(reshape2)

dataset <- data.frame(
  Alphabets = runif(18), 
  D1 = runif(6), 
  D2 = runif(6), 
  D3 = runif(6)
)

molten <- melt(
  dataset, 
  id.vars = "Alphabets", 
  measure.vars = c("D1", "D2", "D3")
)


ggplot(molten, aes(x = variable, y = Alphabets, size = value, colour = variable)) +
  geom_point() +
  scale_colour_manual(values = c("D1" = "cyan", "D2" = "gold2", "D3" = "lightpink4"))

阴谋

于 2014-03-23T23:50:56.913 回答