我使用下面的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()
Run Code Online (Sandbox Code Playgroud)
但是我想要带有3D表面的气泡,比如渐变填充和阴影.如下图所示.

任何人都知道如何使用R来释放它?谢谢!
感谢所有的建议.最后,我尝试了一种愚蠢的方式,从黑暗到光线绘制多个圆圈,使其渐变填充.有什么建议让它更好吗?谢谢!

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()
Run Code Online (Sandbox Code Playgroud) 我需要使用一些 C++ 代码来读取制表符分隔的文本文件。该文件包含三列,第二列包含带空格的字符串。以下是该文件的一些示例。
1 hellow world uid_1
2 good morning uid_2
Run Code Online (Sandbox Code Playgroud)
以下是我需要用来读取文件的C++。但是,当遇到字符串中的空格时,它无法正确读取文件。
关于修改 while 循环以使其工作有什么建议吗?我对 C++ 不熟悉。请提供详细代码。谢谢!
#include <Rcpp.h>
#include <iostream>
#include <fstream>
#include <string>
std::ifstream infile (file_name.c_str());
int row = -1;
std::string col;
std::string uid;
while (infile >> row >> col >> uid) {
### operations on row, col and uid ####
}
Run Code Online (Sandbox Code Playgroud) 我想使用ggplot2在一个绘图中绘制不同颜色的多行,然后添加一个单独的水平线.我的代码如下.它运行良好,直到我运行最后一行p + geom_hline(yintercept=400).所有线条变黑,右侧的传说消失.
有谁知道如何解决这个问题?
library(ggplot2)
mry <- do.call(rbind, by(movies, round(movies$rating), function(df) {
nums <- tapply(df$length, df$year, length)
data.frame(rating=round(df$rating[1]), year = as.numeric(names(nums)),
number=as.vector(nums))
}))
p<-qplot(year, number, data=mry, group=rating, geom="line",xlab = 'year',
ylab = 'number')
p + geom_line()
p + geom_line(aes(colour = rating))
p + geom_hline(yintercept=400)
Run Code Online (Sandbox Code Playgroud) 我有一个包含多个列的 Pandas 数据框,其类型为 float64 或字符串。我正在尝试to_csv将数据帧写入输出文件。然而,它用科学概念输出大数字。例如,如果数字为 1344154454156.992676,则它在文件中保存为 1.344154e+12。
如何抑制科学概念to_csv并保留输出文件中的数字?我尝试float_format在函数中使用参数to_csv,但它失败了,因为数据框中也有带有字符串的列。
以下是一些示例代码:
import pandas as pd
import numpy as np
import os
df = pd.DataFrame({'names': ['a','b','c'],
'values': np.random.rand(3)*100000000000000})
df.to_csv('example.csv')
os.system("cat example.csv")
,names,values
0,a,9.41843213808e+13
1,b,2.23837359193e+13
2,c,9.91801198906e+13
# if i set up float_format:
df.to_csv('example.csv', float_format='{:f}'.format)
ValueError: Unknown format code 'f' for object of type 'str'
Run Code Online (Sandbox Code Playgroud)
如果没有像下面这样的科学概念,如何获取保存在 csv 中的数据?
names values
0 a 94184321380806.796875
1 b 22383735919307.046875
2 c 99180119890642.859375
Run Code Online (Sandbox Code Playgroud)