g | x | w | all
Bytes Lang Time Link
139AWK241203T174000Zxrs
041MATLAB240502T004308Z138 Aspe
024Uiua240501T203307Znoodle p
031TIBasic TI 84+240502T124410Zcorvus_1
013MATL220514T173255ZLuis Men
344Clojure220701T193612ZMartin P
050BQN220518T020848ZRazetime
073Applesoft BASIC220518T011259ZOhentis
042R220517T075722ZDominic
599Minecraft Command Blocks220515T202509ZLostXOR
nanSVGHTML5 + JavaScript ES6220513T174517ZNeil
014Desmos220513T161116ZnaffetS
049R220513T184840Zpajonk
068GFABasic 3.51 Atari ST220513T172132ZArnauld
028J220513T165802ZJonah
068SageMath220513T160606ZNoodle9
144Excel & VBA220513T160336ZAxuary
022Wolfram Language Mathematica220513T151536ZRomanp

AWK, 139 bytes

BEGIN{for(a=b=1;(t+=.1)<14;)g[15-int((r=a+b*t)*sin(t)+.5),50+2*int(r*cos(t)+.5)]=1
for(;k++<30;print)for(j=0;j++<99;)printf g[k,j]?"*":" "}

Attempt This Online!

enter image description here

MATLAB, 41 bytes

Golfed version. Check the bytes count.

t=linspace(0,50,1000);
polarplot(t,10.*t)

Ungolfed version.

clear all;close all;clc;

% Generate theta values from 0 to 50
theta = linspace(0, 50, 1000);

% Define the function for polar plot
g = @(r) r .* theta;

% Calculate the radius values using the function f for a specific theta, here 10
r=10;
f = g(r);

% Create the polar plot
polarplot(theta, f)
title(['Polar Plot for  ', num2str(r), '*theta'])

Uiua, 24 bytes

°⊚-¤/↧.⁅××∿⍉⊟+η..÷50⇡1e3

Try it

Explanation:

÷50⇡1e3 # [0,1,...,999] divided by 50
# consider each as a single θ
∿⍉⊟+η.. # [sin θ, sin(θ + π/2) = cos θ]
×       # multiply both by θ
×       # multiply both by a, giving an (x, y) pair
-¤/↧.⁅  # round, subtract the minimum coordinate of all 1,000 from each
°⊚      # boolean matrix with 1s at these indices

TI-Basic (TI 84+), 31 bytes

Ans➝A
Polar
String⯈Equ("Aϴ",r1
FnOn 1
DispGraph

enter image description here

MATL, 13 bytes

9W:9/tJ*Ze*XG

Try it at MATL online!

Explanation

9W    % Push 9. 2 raised to that. Gives 512
:     % Range. Gives [1 2 ... 512] 
9/    % Divide each entry by 9
t     % Duplicate
J*    % Multiply each entry by imaginary unit
Ze    % Exponential of each entry
*     % Multiply each pair of entries
XG    % Plot

Clojure, 344 bytes

(defn s[a](doto(JFrame."")(.setPreferredSize(Dimension. 500 500))(.add(doto(proxy[JPanel][](paintComponent[g](.drawPolyline g (into-array Integer/TYPE(map #(+ 250(* a(/ % 20)(Math/cos(Math/toRadians %))))(range 3600)))(into-array Integer/TYPE(map #(- 250(* a(/ % 20)(Math/sin(Math/toRadians %))))(range 3600)))3600))))).pack(.setVisible true)))

Output for (s 1):

Spiral

BQN, 50 bytesSBCS

(•math.Sin•Plot○(⊢×↕∘≠)•math.Cos)-2×π×999⥊99÷˜↕100

Run online!

The JS version of BQN has a plotting builtin, which I used for the same rosetta code task. This is just a golf of that.

Applesoft BASIC, 73 bytes

0GR
1COLOR=7
2INPUTR
3I=0
4PLOTCOS(I)*I*R+20,SIN(I)*I*R+20
5I=I+.1
6GOTO4

enter image description here

R, 42 bytes*

function(a,x=0:6e3/1e3)plot(a*x*pi*1i^x/2)

Try it at rdrr.io

Calculates the the points of the spiral as the real and imaginary parts of complex numbers, which is conveniently displayed directly as points on the complex plane by the R plot function.

*The *pi.../2 bit here is to scale the image so that the angle is in radians and achieve a distance between arms of exactly 2*pi. If we use an alternative unit of angular measurement, such as quadrants, we could drop this for 37 bytes: function(a,x=0:6e3/1e3)plot(a*x*1i^x).

Note also that the choice of 1e3 plotted points per quadrant was chosen to allow direct competition with pajonk's R answer; however, 99 plotted points per quadrant also gives a satisfactory output (the points overlap) and saves another byte: function(a,x=0:999/99)plot(a*x*1i^x).


R + pracma library, 39 bytes

function(a)pracma::polar(r<-0:99/9,a*r)

Try it at rdrr.io

Using a dedicated polar function doesn't save much, if anything at all.

Minecraft Command Blocks, 599 bytes

command block pic

Commands

Left column (bottom block 0, 4, -2)

scoreboard objectives add c dummy
scoreboard players set m c 1
summon armor_stand 0 0 0
setblock 0 3 0 redstone_block

Middle column (bottom block 0, 4, 0)

execute at @e[type=armor_stand] run setblock ~ ~ ~ stone
tp @e[type=armor_stand] 0 0 0
execute as @e[type=armor_stand] at @s run tp @s ~ ~ ~ ~5 ~
scoreboard players reset d
scoreboard players add m c 1
setblock 0 3 1 air
setblock 0 3 1 redstone_block

Right column (bottom block 0, 4, 1)

execute as @e[type=armor_stand] at @s run tp @s ^ ^ ^<Input>
scoreboard players add d c 1
setblock 0 3 1 air
setblock 0 3 0 air
execute unless score d c = m c run setblock 0 3 1 redstone_block
execute if score d c = m c run setblock 0 3 0 redstone_block

The distance multiplier is set in the first command block in the right column. Hardcoding inputs is not allowed by codegolf rules, but there isn't any other way to take input in Minecraft.

When ran for an hour with an input of 0.1 it produced this. It starts skipping blocks after a little over one rotation but it does complete one full rotation. spiral

SVG(HTML5) + JavaScript (ES6), 77 76 + 96 = 172 bytes

f=a=>s.setAttribute("points",[...Array(9e3)].map((_,i)=>[Math.sin(i/=100)*i*a,Math.cos(i)*i*a]))
;f(.1)
<input value=.1 oninput=f(+value)><br>
<svg viewBox=-4,-4,8,8><polyline id=s fill=none stroke=red stroke-width=.05>

Edit: Saved 1 byte thanks to @Kaiido.

Desmos, 14 bytes

r=\ans_1\theta

Well...

Try it on Desmos!

R, 49 bytes

function(a)plot(cos(t<-0:9e3/1e3)*t*a,sin(t)*t*a)

Try it on rdrr.io!

GFA-Basic 3.51 (Atari ST), 68 bytes

A manually edited listing in .LST format. All lines end with CR, including the last one.

PRO d(a)
F t=0TO 251
PL 160+t*COS(t/20)*a,100-t*SIN(t/20)*a
N t
RET

which expands to:

PROCEDURE d(a)
  FOR t=0 TO 251
    PLOT 160+t*COS(t/20)*a,100-t*SIN(t/20)*a
  NEXT t
RETURN

NB: We use \$251\$ as the upper bound so that the curve stops on the x-axis rather than at some random position (because \$251/20\approx 4\pi\$).

Example output

output

J, 28 bytes

plot@(**r.@o.@])(%~8*i.)@1e5

Try it online!

a=1 One

a=2 Two

SageMath, 69 68 bytes

lambda a,t=var('t'):parametric_plot((a*t*cos(t),a*t*sin(t)),(t,0,9))

Try it online!

Saved a byte thanks to Seggan!!!

Current graph

Original graph using 42 instead of 9

Original graph (0,42)

Excel & VBA, 144 bytes

Cell B1 = SEQUENCE(90)/9*PI()
Cell C1 = B1#*COS(B1#)*A1
Cell D1 = B1#*SIN(B1#)*A1
VBA Immediate Window Set x=activesheet.Shapes.AddChart2(,73,,,,360):x.Chart.SetSourceData Source:=Range("C1:D96")

Could cut the ,,,,360 if the plot doesn't have to be square. Excel Plot

Wolfram Language (Mathematica), 22 bytes

PolarPlot[y#,{y,0,7}]&

Try it online!

I picked 7 for the plot range because it's a one-digit number that is close to \$2\pi\$ (so we get just around 1 rotation, slightly more).

Example result for input = 1:

example result

Example when we replace 7 with 50 (makes it more accurate to the image in the original post, but is one byte longer):

enter image description here