是plot()
在R键曲线100万个左右的数据点的最有效方法是什么?我想画一堆这些Clifford吸引者.这是一个我从一个非常大的图像缩小的例子:
这是我用于绘制非常大的8K(7680x4320)图像的一些代码的链接.
生成50或1亿个点(使用Rcpp)不需要很长时间,也不需要获取颜色+透明度的十六进制值,但实际绘图和保存到磁盘的速度非常慢.
编辑:使用的代码
# Load packages
library(Rcpp)
library(viridis)
# output parameters
output_width = 1920 * 4
output_height = 1080 * 4
N_points = 50e6
point_alpha = 0.05 #point transperancy
# Attractor parameters
params <- c(1.886,-2.357,-0.328, 0.918)
# C++ function to rapidly generate points
cliff_rcpp <- cppFunction(
"
NumericMatrix cliff(int nIter, double A, double B, double C, double D) {
NumericMatrix x(nIter, 2);
for (int i=1; i < nIter; …
Run Code Online (Sandbox Code Playgroud) 我正在尝试创建一个 3D 阵列,然后在(在其他软件或体积渲染包中)像 Lorenz Attractor 这样的奇怪吸引器上执行体积渲染。例如,从数据点绘制吸引子并提供一个值来分配颜色并在 matplotlib 中进行可视化是很容易的。
但是我想要一个填充的体积数组。我尝试过像 griddata 这样的插值方法,但它没有给出想要的结果。我的设想是这样的:
这是来自维基百科页面。
这是我尝试过的,但如果你在一个简单的查看器中打开结果,它看起来不太好。我在想,也许只在组成 x、y、z 数组的点之间进行插值……玩了几个小时后,我有点迷茫。我认为我需要的是取点并进行某种插值或填充到数组中,在这里我调用 interp_im。然后可以在体积渲染中查看。非常感谢任何帮助!
import numpy as np
import matplotlib.pyplot as plt
from scipy.integrate import odeint
from scipy.interpolate import griddata
from scipy.interpolate import LinearNDInterpolator
from skimage.external import tifffile
rho = 28.0
sigma = 10.0
beta = 8.0 / 3.0
def f(state, t):
x, y, z = state # Unpack the state vector
return sigma * (y - x), x * (rho - z) - y, x * y …
Run Code Online (Sandbox Code Playgroud)