立即订阅

哟库(Julia打造可视化万花筒,比Python来得更炫酷)

欧易app下载

OKEX欧易app下载

欧易交易所app是全球排名第一的虚拟货币交易所。

APP下载   官网注册
2024年05月26日 09:05 来源于:烟月稀财经笔记 浏览量:
Julia官方迭代几乎日更。Julia的框架库也是频繁更新,就拿之前介绍过的 Flux.jl 来说,也在最近发布了新版。Julia在国外已然

Julia官方迭代几乎日更。Julia的框架库也是频繁更新,就拿之前介绍过的 Flux.jl 来说,也在最近发布了新版。Julia在国外已然是一枚新宠,而国内的资料却相对较少。这么优秀的一门科学计算语言实在不容错过。尤其性能如此出色,兼顾简单易学,不必像很多项目一开始图简单用Python,遇到性能瓶颈又换C++。在之前的例子里我们介绍了关于Julia数据可视化的简洁易用。如下:

这篇主要介绍Julia万花筒可视化,要用到一个R包frak,介绍如下。

安装frak包

场景描述,在测试软件的时候最快速的生成测试可视化,需要满足点如下:

  • 快速生成
  • 要生动有趣,而不仅仅是白噪点
  • 每像素8位, 而这个值可以放到R原始向量或C的uint8_t向量
  • 可平移、缩放、并且随着输入变量发生简单的改变


FRAK包


安装也非常方便,从Github上直接拉,如下:

# install.package('remotes')remotes::install_github('coolbutuseless/frak')

生成Julia数据集

生成Julia的数据集,cx和cy作为迭代变量c的组件,如下:

julia(cx, cy, movex, movey, zoom, size, max_iter) 

返回的原始值数组表示特定位置转向无穷大时的迭代计数,这些值被缩放到原始向量允许的全部范围(即0到255的整数)。

library(frak)fractal <- julia(cx = -0.7, cy = 0.27, zoom = 1, size = 400, max_iter = 255)mode(fractal) <- 'integer'plot(as.raster(fractal/255))


生成万花筒


为图上翠绿色

直接看代码,如下:

library(viridisLite)# 生成不规则fractal <- julia(cx = -0.74, cy = 0.17, zoom = 3, size = 400, max_iter = 100)mode(fractal) <- 'integer'# Grab a palette from viridispal <- rev(viridisLite::viridis(256))# Recode the values with the palette. Lowest raw value is 0, so offset by 1.fractal_raster   <- fractalfractal_raster[] <- pal[fractal_raster + 1]plot(as.raster(fractal_raster))


翠绿色版本

多帧动态程序


动态gif

在C中创建一个julia集合比使用普通的R快100倍。

suppressPackageStartupMessages({  library(Julia)  library(frak)  library(ggplot2)  library(dplyr)  library(tidyr)})size <- 400# Julia::JuliaImageJuliaImage does at most 50 iterationsres <- bench::mark(  `Julia::JuliaImage()` = Julia::JuliaImage(imageN = size, centre = 0.0, L = 4, C = 1-1.6180339887),  `frak::julia()`       = julia(size = size, max_iter = 50),  check = FALSE)

⚠️警告:一些表达式在每次迭代中都有一个GC,所以过滤是禁用的。


GC回收

彩蛋

最后附上我整理的Julia学习路线图,我会不定期的分享Julia系列。


Julia学习路线图

金融科技、人工智能感兴趣的小伙伴记得关注我哟~

参考:

mandelbrot 生成视图(https://cran.r-project.org/package=mandelbrot)

一个纯Julia集的生成器(https://cran.r-project.org/package=Julia)


https://coolbutuseless.github.io/2020/07/16/introducing-frak-a-julia-set-fractal-generator

关键词:
友情链接