An open API service indexing awesome lists of open source software.

https://github.com/ohno/scalebreaks.svg

SVG files to use scale breaks (wave lines) in PowerPoint or other applications.
https://github.com/ohno/scalebreaks.svg

Last synced: 9 months ago
JSON representation

SVG files to use scale breaks (wave lines) in PowerPoint or other applications.

Awesome Lists containing this project

README

          

{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# ScaleBreaks.svg\n",
"\n",
"Three types are available. Some properties are changeable in Microsoft PowerPoint and other applications.\n",
"\n",
"|type|summary|\n",
"|:---|:---|\n",
"|stroke|It consists of only one line with a `` element. Line color and line width are changeable.|\n",
"|fill|It consists of an area with a `` element. Only the fill color are changeable.|\n",
"|stroke&fill|It consists of two strokes overlaid with a fill. Line color, line width and fill color.|"
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Julia Version 1.7.1\n",
"Commit ac5cc99908 (2021-12-22 19:35 UTC)\n",
"Platform Info:\n",
" OS: Windows (x86_64-w64-mingw32)\n",
" CPU: Intel(R) Core(TM) i7-4650U CPU @ 1.70GHz\n",
" WORD_SIZE: 64\n",
" LIBM: libopenlibm\n",
" LLVM: libLLVM-12.0.1 (ORCJIT, haswell)\n"
]
}
],
"source": [
"versioninfo()"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"Main.ScaleBreaks"
]
},
"execution_count": 2,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"module ScaleBreaks\n",
"\n",
"function args2property(args...)\n",
" str = \"\"\n",
" for arg in args\n",
" str *= replace.(\"$(arg[1])\", \"_\"=>\"-\")\n",
" str *= \"=\\\"\"\n",
" str *= \"$(arg[2])\"\n",
" str *= \"\\\" \"\n",
" end\n",
" return str\n",
"end\n",
"\n",
"function Header(X, Y)\n",
" margin = (maximum(Y) - minimum(Y))\n",
" width = (maximum(X) - minimum(X)) + margin \n",
" height = (maximum(Y) - minimum(Y)) + margin \n",
" viewWidth = width\n",
" viewHeight = height\n",
" left = minimum(X) - margin / 2\n",
" top = minimum(Y) - margin / 2\n",
" \"\"\"\n",
" \n",
" \n",
" \n",
" \"\"\"\n",
"end\n",
"\n",
"function Polyline(X, Y; args...)\n",
" str = \"$(X[1]),$(Y[1])\"\n",
" for i in 2:min(length(X),length(Y))\n",
" str *= \" $(X[i]),$(Y[i])\"\n",
" end\n",
" \"\"\"\n",
" \n",
" \n",
" \"\"\"\n",
"end\n",
"\n",
"function Path(X, Y; args...)\n",
" str = \"M$(X[1]),$(Y[1])\"\n",
" for i in 2:min(length(X),length(Y))\n",
" str *= \" L$(X[i]),$(Y[i])\"\n",
" end\n",
" \"\"\"\n",
" \n",
" \n",
" \"\"\"\n",
"end\n",
"\n",
"function Footer()\n",
" \"\"\"\n",
" \n",
" \n",
" \"\"\"\n",
"end\n",
"\n",
"function draw(; mode=1, path=\"\", dx=0.1, dy=0, Hz=10, width=400, height=20, stroke_width=1, stroke_linecap=\"round\", stroke_linejoin=\"round\", stroke=\"#000000\", fill=\"none\", args...)\n",
" f = x -> height/2 * sin(2*π*x/width*Hz)\n",
" if mode==1\n",
" X = 0:dx:width\n",
" Y = f.(X)\n",
" source = Header(X,Y)\n",
" source *= Polyline(X,Y;stroke_width=stroke_width,stroke_linecap=stroke_linecap,stroke_linejoin=stroke_linejoin,stroke=stroke,fill=fill,args...)\n",
" elseif mode==2\n",
" X1 = 0:dx:width\n",
" Y1 = f.(X1)\n",
" X2 = reverse(X1)\n",
" Y2 = reverse(Y1) .+ dy\n",
" X3 = vcat(X1, X2)\n",
" Y3 = vcat(Y1, Y2)\n",
" source = Header(X3,Y3)\n",
" source *= Path(X3,Y3;fill=fill,stroke_width=0,stroke_linecap=stroke_linecap,stroke_linejoin=stroke_linejoin,stroke=\"none\",args...)\n",
" else\n",
" X1 = 0:dx:width\n",
" Y1 = f.(X1)\n",
" X2 = reverse(X1)\n",
" Y2 = reverse(Y1) .+ dy\n",
" X3 = vcat(X1, X2)\n",
" Y3 = vcat(Y1, Y2)\n",
" X4 = vcat(X1, X2)\n",
" Y4 = vcat(Y1, reverse(Y1))\n",
" X5 = vcat(X1, X2)\n",
" Y5 = vcat(Y1 .+ dy, Y2)\n",
" source = Header(X3,Y3)\n",
" source *= Path(X3,Y3;fill=fill,stroke_width=0,stroke_linecap=stroke_linecap,stroke_linejoin=stroke_linejoin,stroke=\"none\",args...)\n",
" source *= Path(X4,Y4;stroke_width=stroke_width,stroke_linecap=stroke_linecap,stroke_linejoin=stroke_linejoin,stroke=stroke,fill=\"none\",args...)\n",
" source *= Path(X5,Y5;stroke_width=stroke_width,stroke_linecap=stroke_linecap,stroke_linejoin=stroke_linejoin,stroke=stroke,fill=\"none\",args...) \n",
" end\n",
" source *= Footer()\n",
" if path != \"\"\n",
" # println(\"[$path]($path)\\n\")\n",
" println(\"![]($path)\")\n",
" save(path, source)\n",
" end\n",
" # HTML(source) |> display\n",
"end\n",
"\n",
"function save(path, source)\n",
" mkpath(dirname(path))\n",
" file = open(path, \"w\")\n",
" Base.write(file, source)\n",
" close(file)\n",
"end\n",
"\n",
"end"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {
"scrolled": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"\n",
"## 100x10\n",
"\n",
"### stroke\n",
"\n",
"![](data/1_10_100_1.svg)\n",
"![](data/1_10_100_2.svg)\n",
"![](data/1_10_100_3.svg)\n",
"![](data/1_10_100_4.svg)\n",
"![](data/1_10_100_5.svg)\n",
"![](data/1_10_100_10.svg)\n",
"![](data/1_10_100_20.svg)\n",
"\n",
"### fill\n",
"\n",
"![](data/2_10_100_1_5.svg)\n",
"![](data/2_10_100_2_5.svg)\n",
"![](data/2_10_100_3_5.svg)\n",
"![](data/2_10_100_4_5.svg)\n",
"![](data/2_10_100_5_5.svg)\n",
"![](data/2_10_100_10_5.svg)\n",
"![](data/2_10_100_20_5.svg)\n",
"\n",
"![](data/2_10_100_1_10.svg)\n",
"![](data/2_10_100_2_10.svg)\n",
"![](data/2_10_100_3_10.svg)\n",
"![](data/2_10_100_4_10.svg)\n",
"![](data/2_10_100_5_10.svg)\n",
"![](data/2_10_100_10_10.svg)\n",
"![](data/2_10_100_20_10.svg)\n",
"\n",
"![](data/2_10_100_1_15.svg)\n",
"![](data/2_10_100_2_15.svg)\n",
"![](data/2_10_100_3_15.svg)\n",
"![](data/2_10_100_4_15.svg)\n",
"![](data/2_10_100_5_15.svg)\n",
"![](data/2_10_100_10_15.svg)\n",
"![](data/2_10_100_20_15.svg)\n",
"\n",
"![](data/2_10_100_1_20.svg)\n",
"![](data/2_10_100_2_20.svg)\n",
"![](data/2_10_100_3_20.svg)\n",
"![](data/2_10_100_4_20.svg)\n",
"![](data/2_10_100_5_20.svg)\n",
"![](data/2_10_100_10_20.svg)\n",
"![](data/2_10_100_20_20.svg)\n",
"\n",
"### stroke&fill\n",
"\n",
"![](data/3_10_100_1_5.svg)\n",
"![](data/3_10_100_2_5.svg)\n",
"![](data/3_10_100_3_5.svg)\n",
"![](data/3_10_100_4_5.svg)\n",
"![](data/3_10_100_5_5.svg)\n",
"![](data/3_10_100_10_5.svg)\n",
"![](data/3_10_100_20_5.svg)\n",
"\n",
"![](data/3_10_100_1_10.svg)\n",
"![](data/3_10_100_2_10.svg)\n",
"![](data/3_10_100_3_10.svg)\n",
"![](data/3_10_100_4_10.svg)\n",
"![](data/3_10_100_5_10.svg)\n",
"![](data/3_10_100_10_10.svg)\n",
"![](data/3_10_100_20_10.svg)\n",
"\n",
"![](data/3_10_100_1_15.svg)\n",
"![](data/3_10_100_2_15.svg)\n",
"![](data/3_10_100_3_15.svg)\n",
"![](data/3_10_100_4_15.svg)\n",
"![](data/3_10_100_5_15.svg)\n",
"![](data/3_10_100_10_15.svg)\n",
"![](data/3_10_100_20_15.svg)\n",
"\n",
"![](data/3_10_100_1_20.svg)\n",
"![](data/3_10_100_2_20.svg)\n",
"![](data/3_10_100_3_20.svg)\n",
"![](data/3_10_100_4_20.svg)\n",
"![](data/3_10_100_5_20.svg)\n",
"![](data/3_10_100_10_20.svg)\n",
"![](data/3_10_100_20_20.svg)\n",
"\n",
"## 200x10\n",
"\n",
"### stroke\n",
"\n",
"![](data/1_10_200_1.svg)\n",
"![](data/1_10_200_2.svg)\n",
"![](data/1_10_200_3.svg)\n",
"![](data/1_10_200_4.svg)\n",
"![](data/1_10_200_5.svg)\n",
"![](data/1_10_200_10.svg)\n",
"![](data/1_10_200_20.svg)\n",
"\n",
"### fill\n",
"\n",
"![](data/2_10_200_1_5.svg)\n",
"![](data/2_10_200_2_5.svg)\n",
"![](data/2_10_200_3_5.svg)\n",
"![](data/2_10_200_4_5.svg)\n",
"![](data/2_10_200_5_5.svg)\n",
"![](data/2_10_200_10_5.svg)\n",
"![](data/2_10_200_20_5.svg)\n",
"\n",
"![](data/2_10_200_1_10.svg)\n",
"![](data/2_10_200_2_10.svg)\n",
"![](data/2_10_200_3_10.svg)\n",
"![](data/2_10_200_4_10.svg)\n",
"![](data/2_10_200_5_10.svg)\n",
"![](data/2_10_200_10_10.svg)\n",
"![](data/2_10_200_20_10.svg)\n",
"\n",
"![](data/2_10_200_1_15.svg)\n",
"![](data/2_10_200_2_15.svg)\n",
"![](data/2_10_200_3_15.svg)\n",
"![](data/2_10_200_4_15.svg)\n",
"![](data/2_10_200_5_15.svg)\n",
"![](data/2_10_200_10_15.svg)\n",
"![](data/2_10_200_20_15.svg)\n",
"\n",
"![](data/2_10_200_1_20.svg)\n",
"![](data/2_10_200_2_20.svg)\n",
"![](data/2_10_200_3_20.svg)\n",
"![](data/2_10_200_4_20.svg)\n",
"![](data/2_10_200_5_20.svg)\n",
"![](data/2_10_200_10_20.svg)\n",
"![](data/2_10_200_20_20.svg)\n",
"\n",
"### stroke&fill\n",
"\n",
"![](data/3_10_200_1_5.svg)\n",
"![](data/3_10_200_2_5.svg)\n",
"![](data/3_10_200_3_5.svg)\n",
"![](data/3_10_200_4_5.svg)\n",
"![](data/3_10_200_5_5.svg)\n",
"![](data/3_10_200_10_5.svg)\n",
"![](data/3_10_200_20_5.svg)\n",
"\n",
"![](data/3_10_200_1_10.svg)\n",
"![](data/3_10_200_2_10.svg)\n",
"![](data/3_10_200_3_10.svg)\n",
"![](data/3_10_200_4_10.svg)\n",
"![](data/3_10_200_5_10.svg)\n",
"![](data/3_10_200_10_10.svg)\n",
"![](data/3_10_200_20_10.svg)\n",
"\n",
"![](data/3_10_200_1_15.svg)\n",
"![](data/3_10_200_2_15.svg)\n",
"![](data/3_10_200_3_15.svg)\n",
"![](data/3_10_200_4_15.svg)\n",
"![](data/3_10_200_5_15.svg)\n",
"![](data/3_10_200_10_15.svg)\n",
"![](data/3_10_200_20_15.svg)\n",
"\n",
"![](data/3_10_200_1_20.svg)\n",
"![](data/3_10_200_2_20.svg)\n",
"![](data/3_10_200_3_20.svg)\n",
"![](data/3_10_200_4_20.svg)\n",
"![](data/3_10_200_5_20.svg)\n",
"![](data/3_10_200_10_20.svg)\n",
"![](data/3_10_200_20_20.svg)\n",
"\n",
"## 400x10\n",
"\n",
"### stroke\n",
"\n",
"![](data/1_10_400_1.svg)\n",
"![](data/1_10_400_2.svg)\n",
"![](data/1_10_400_3.svg)\n",
"![](data/1_10_400_4.svg)\n",
"![](data/1_10_400_5.svg)\n",
"![](data/1_10_400_10.svg)\n",
"![](data/1_10_400_20.svg)\n",
"\n",
"### fill\n",
"\n",
"![](data/2_10_400_1_5.svg)\n",
"![](data/2_10_400_2_5.svg)\n",
"![](data/2_10_400_3_5.svg)\n",
"![](data/2_10_400_4_5.svg)\n",
"![](data/2_10_400_5_5.svg)\n",
"![](data/2_10_400_10_5.svg)\n",
"![](data/2_10_400_20_5.svg)\n",
"\n",
"![](data/2_10_400_1_10.svg)\n",
"![](data/2_10_400_2_10.svg)\n",
"![](data/2_10_400_3_10.svg)\n",
"![](data/2_10_400_4_10.svg)\n",
"![](data/2_10_400_5_10.svg)\n",
"![](data/2_10_400_10_10.svg)\n",
"![](data/2_10_400_20_10.svg)\n",
"\n",
"![](data/2_10_400_1_15.svg)\n",
"![](data/2_10_400_2_15.svg)\n",
"![](data/2_10_400_3_15.svg)\n",
"![](data/2_10_400_4_15.svg)\n",
"![](data/2_10_400_5_15.svg)\n",
"![](data/2_10_400_10_15.svg)\n",
"![](data/2_10_400_20_15.svg)\n",
"\n",
"![](data/2_10_400_1_20.svg)\n",
"![](data/2_10_400_2_20.svg)\n",
"![](data/2_10_400_3_20.svg)\n",
"![](data/2_10_400_4_20.svg)\n",
"![](data/2_10_400_5_20.svg)\n",
"![](data/2_10_400_10_20.svg)\n",
"![](data/2_10_400_20_20.svg)\n",
"\n",
"### stroke&fill\n",
"\n",
"![](data/3_10_400_1_5.svg)\n",
"![](data/3_10_400_2_5.svg)\n",
"![](data/3_10_400_3_5.svg)\n",
"![](data/3_10_400_4_5.svg)\n",
"![](data/3_10_400_5_5.svg)\n",
"![](data/3_10_400_10_5.svg)\n",
"![](data/3_10_400_20_5.svg)\n",
"\n",
"![](data/3_10_400_1_10.svg)\n",
"![](data/3_10_400_2_10.svg)\n",
"![](data/3_10_400_3_10.svg)\n",
"![](data/3_10_400_4_10.svg)\n",
"![](data/3_10_400_5_10.svg)\n",
"![](data/3_10_400_10_10.svg)\n",
"![](data/3_10_400_20_10.svg)\n",
"\n",
"![](data/3_10_400_1_15.svg)\n",
"![](data/3_10_400_2_15.svg)\n",
"![](data/3_10_400_3_15.svg)\n",
"![](data/3_10_400_4_15.svg)\n",
"![](data/3_10_400_5_15.svg)\n",
"![](data/3_10_400_10_15.svg)\n",
"![](data/3_10_400_20_15.svg)\n",
"\n",
"![](data/3_10_400_1_20.svg)\n",
"![](data/3_10_400_2_20.svg)\n",
"![](data/3_10_400_3_20.svg)\n",
"![](data/3_10_400_4_20.svg)\n",
"![](data/3_10_400_5_20.svg)\n",
"![](data/3_10_400_10_20.svg)\n",
"![](data/3_10_400_20_20.svg)\n"
]
}
],
"source": [
"for height in [10]\n",
"for width in [100,200,400]\n",
" \n",
" println(\"\\n## $(width)x$(height)\") \n",
"\n",
" println(\"\\n### stroke\\n\")\n",
" for Hz in [1,2,3,4,5,10,20]\n",
" ScaleBreaks.draw(mode=1, path=\"data/1_$(height)_$(width)_$(Hz).svg\", height=height, width=width, Hz=Hz)\n",
" end\n",
"\n",
" println(\"\\n### fill\")\n",
" for dy in [5,10,15,20]\n",
" println()\n",
" for Hz in [1,2,3,4,5,10,20]\n",
" ScaleBreaks.draw(mode=2, path=\"data/2_$(height)_$(width)_$(Hz)_$(dy).svg\", height=height, width=width, Hz=Hz, stroke_width=0, dy=dy, stroke=\"none\", fill=\"#000000\")\n",
" end\n",
" end\n",
"\n",
" println(\"\\n### stroke&fill\")\n",
" for dy in [5,10,15,20]\n",
" println()\n",
" for Hz in [1,2,3,4,5,10,20]\n",
" ScaleBreaks.draw(mode=3, path=\"data/3_$(height)_$(width)_$(Hz)_$(dy).svg\", height=height, width=width, Hz=Hz, dy=dy, stroke=\"#000000\", fill=\"#FFFFFF\")\n",
" end\n",
" end\n",
" \n",
"end\n",
"end"
]
}
],
"metadata": {
"kernelspec": {
"display_name": "Julia 1.7.1",
"language": "julia",
"name": "julia-1.7"
},
"language_info": {
"file_extension": ".jl",
"mimetype": "application/julia",
"name": "julia",
"version": "1.7.1"
}
},
"nbformat": 4,
"nbformat_minor": 4
}