Как использовать R для построения пузырьковых диаграмм с градиентными заливками

Я использую код R ниже, чтобы построить пузырьковую диаграмму.

pdf(file='myfigure.pdf',height=10,width=13)
y<-c(123,92,104,23,17,89,13)
x<-c(11,45,24,50,18,7,2)
size<-c(1236,1067,1176,610,539,864,1026)
radius<-sqrt(size/pi)
col<-c(2,2,3,4,5,5,6)
name<-c("Acura", "Alfa Romeo","AM General","Aston Martin Lagonda","Audi","BMW","Bugatti")

symbols(x,y,  circles=radius,fg="white",bg=col,ylim=c(-20,140))
text(x, y, name, cex=1.5,font=4)
dev.off()

enter image description here Но я хочу пузырьки с трехмерной поверхностью, скажем, градиентные заливки и тени. как в таблице ниже. enter image description here

Кто-нибудь знает, как использовать R, чтобы выпустить его? Спасибо!

Спасибо за все предложения. Наконец я попробовал глупый способ, нарисовав несколько кругов от темного до светлого, чтобы сделать его градиентным. Любые предложения, чтобы сделать это лучше? Спасибо! enter image description here

makeTransparent<-function(someColor, alpha)
{
 newColor<-col2rgb(someColor)
 apply(newColor, 2, function(curcoldata){rgb(red=curcoldata[1], green=curcoldata[2],                                          blue=curcoldata[3],alpha=alpha,maxColorValue=255)})
}

pdf(file='myfigure.pdf',height=10,width=13)
y<-c(123,92,104,23,17,89,13)
x<-c(11,45,24,50,18,7,2)
size<-c(1236,1067,1176,610,539,864,1026)
radius<-sqrt(size/pi)
col<-c(2,2,3,4,5,5,6)
name<-c("Acura", "Alfa Romeo","AM General","Aston Martin Lagonda","Audi","BMW","Bugatti")


x2<-c()
y2<-c()
circles<-c()
bg<-c()
fg<-c()

num<-30
radius_min<-0.3
alpha_min<-40
alpha_max<-180

for (i in 1:num){

x2<-c(x2,x)
y2<-c(y2,y)
circles<-c(circles,radius*(radius_min+(i-1)*(1-radius_min)/num))
bg<-c(bg,makeTransparent(col,alpha=alpha_max-(i-1)*(alpha_max-alpha_min)/num))
if(i!=num){fg<-c(fg,makeTransparent(col,alpha=alpha_max-(i-1)*(alpha_max-alpha_min)/num))}else{fg<-c(fg,rep('white',length(x)))}


}




symbols(x2,y2,circles=circles,fg=fg,bg=bg)
text(x, y, name, cex=1.5,font=4)
dev.off()

Ответы на вопрос(1)

Ваш ответ на вопрос