# How to Draw Circuits using Circuits.jl

**URL:** https://discourse.julialang.org/t/how-to-draw-circuits-using-circuits-jl/87472
**Category:** General Usage
**Tags:** package
**Created:** [September 19, 2022, 3:03pm UTC](https://discourse.julialang.org/t/how-to-draw-circuits-using-circuits-jl/87472 "2022-09-19T15:03:43Z")
**Posts on this page:** 4
**Page:** 1

<div class="post-metadata">

### Author: ![Freya\_the\_Goddess](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/freya_the_goddess/32/36835_2.png) [@Freya\_the\_Goddess](https://discourse.julialang.org/u/Freya_the_Goddess)
#### Post date: [September 19, 2022, 3:03pm UTC](https://discourse.julialang.org/t/how-to-draw-circuits-using-circuits-jl/87472/1 "2022-09-19T15:03:43Z")

</div>

Hi all,

I want to draw this

![Capture d’écran_2022-09-19_22-01-52](https://global.discourse-cdn.com/julialang/original/3X/8/0/80fb770bf488982af2accf4c17a5e9167670bc6d.png)

I want to try `Circuits.jl` and try simple example first, but unable to use it, I do not know how to plot it, or is my code is wrong…

```julia
using Circuits, Plots

c = @circuit a:(0,0) --> Inductor(9e-3) --> b:(0,1) --> Resistor(11) --> c:(1,1) --> Capacitor(1.455e-6) --> d:(1,0)

plot(c)

```

**Cannot convert Circuit to series data for plotting**

**Stacktrace:**  
\*\* [1] error(s::String)\*\*  
\*\* @ Base ./error.jl:33\*\*  
\*\* [2] \_prepare\_series\_data(x::Circuit)\*\*  
\*\* @ RecipesPipeline ~/.julia/packages/RecipesPipeline/OXGmH/src/series.jl:8\*\*  
\*\* [3] \_series\_data\_vector(x::Circuit, plotattributes::Dict{Symbol, Any})\*\*  
\*\* @ RecipesPipeline ~/.julia/packages/RecipesPipeline/OXGmH/src/series.jl:35\*\*  
\*\* [4] macro expansion\*\*  
\*\* @ ~/.julia/packages/RecipesPipeline/OXGmH/src/series.jl:135 [inlined]\*\*  
\*\* [5] apply\_recipe(plotattributes::AbstractDict{Symbol, Any}, #unused#::Type{RecipesPipeline.SliceIt}, x::Any, y::Any, z::Any)\*\*  
\*\* @ RecipesPipeline ~/.julia/packages/RecipesBase/qpxEX/src/RecipesBase.jl:289\*\*  
\*\* [6] \_process\_userrecipes!(plt::Any, plotattributes::Any, args::Any)\*\*  
\*\* @ RecipesPipeline ~/.julia/packages/RecipesPipeline/OXGmH/src/user\_recipe.jl:36\*\*  
\*\* [7] recipe\_pipeline!(plt::Any, plotattributes::Any, args::Any)\*\*  
\*\* @ RecipesPipeline ~/.julia/packages/RecipesPipeline/OXGmH/src/RecipesPipeline.jl:70\*\*  
\*\* [8] \_plot!(plt::Plots.Plot, plotattributes::Any, args::Any)\*\*  
\*\* @ Plots ~/.julia/packages/Plots/FCUr0/src/plot.jl:231\*\*  
\*\* [9] plot(args::Any; kw::Base.Pairs{Symbol, V, Tuple{Vararg{Symbol, N}}, NamedTuple{names, T}} where {V, N, names, T\<:Tuple{Vararg{Any, N}}})\*\*  
\*\* @ Plots ~/.julia/packages/Plots/FCUr0/src/plot.jl:106\*\*  
\*\* [10] plot(args::Any)\*\*  
\*\* @ Plots ~/.julia/packages/Plots/FCUr0/src/plot.jl:100\*\*  
\*\* [11] top-level scope\*\*  
\*\* @ In[11]:5\*\*  
\*\* [12] eval\*\*  
\*\* @ ./boot.jl:373 [inlined]\*\*  
\*\* [13] include\_string(mapexpr::typeof(REPL.softscope), mod::Module, code::String, filename::String)\*\*  
\*\* @ Base ./loading.jl:1196\*\*

Then another tryout:

```julia
c = @circuit begin
    b:(0,0) --> VoltageSource(3) --> (1,0) --> Resistor(4) --> Inductor(2) --> (1,1) --> a:(0,1)
    :a --> Capacitor(1) // Inductor(4) --> :b
end

show(io,mime,c,shownodes=true)

```

**LoadError: Coordinate // doesn’t exist**  
**in expression starting at In[12]:1**

**Stacktrace:**  
\*\* [1] error(s::String)\*\*  
\*\* @ Base ./error.jl:33\*\*  
\*\* [2] push\_stuff!(e::Symbol, coord::Dict{Union{Int64, Symbol}, Union{Expr, Symbol}}, comp::Vector{Expr})\*\*  
\*\* @ Circuits ~/.julia/packages/Circuits/0lstw/src/Circuits.jl:177\*\*  
\*\* [3] push\_stuff!(e::Expr, coord::Dict{Union{Int64, Symbol}, Union{Expr, Symbol}}, comp::Vector{Expr})\*\*  
\*\* @ Circuits ~/.julia/packages/Circuits/0lstw/src/Circuits.jl:146\*\*  
\*\* [4] push\_stuff!(e::Expr, coord::Dict{Union{Int64, Symbol}, Union{Expr, Symbol}}, comp::Vector{Expr})\*\*  
\*\* @ Circuits ~/.julia/packages/Circuits/0lstw/src/Circuits.jl:120\*\*  
\*\* [5] push\_stuff!(e::Expr, coord::Dict{Union{Int64, Symbol}, Union{Expr, Symbol}}, comp::Vector{Expr})\*\*  
\*\* @ Circuits ~/.julia/packages/Circuits/0lstw/src/Circuits.jl:121\*\*  
\*\* [6] generate\_circuit(arg::Expr)\*\*  
\*\* @ Circuits ~/.julia/packages/Circuits/0lstw/src/Circuits.jl:90\*\*  
\*\* [7] var"@circuit"( **source** ::LineNumberNode, **module** ::Module, args::Vararg{Any})\*\*  
\*\* @ Circuits ~/.julia/packages/Circuits/0lstw/src/Circuits.jl:77\*\*  
\*\* [8] eval\*\*  
\*\* @ ./boot.jl:373 [inlined]\*\*  
\*\* [9] include\_string(mapexpr::typeof(REPL.softscope), mod::Module, code::String, filename::String)\*\*  
\*\* @ Base ./loading.jl:1196\*\*

Can anyone help me on this? Thanks~!!

---

<div class="post-metadata">

### Author: ![zdenek\_hurak](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/zdenek_hurak/32/53118_2.png) [@zdenek\_hurak](https://discourse.julialang.org/u/zdenek_hurak)
#### Post date: [September 19, 2022, 3:10pm UTC](https://discourse.julialang.org/t/how-to-draw-circuits-using-circuits-jl/87472/2 "2022-09-19T15:10:58Z")

</div>

If you only want to draw it, i think you’d better use the underlying [circuitikz](https://github.com/circuitikz/circuitikz) (for [TikZ](https://texample.net/tikz/examples/)). I see no advantage is approaching it through an additional Julia layer.

---

<div class="post-metadata">

### Author: ![Freya\_the\_Goddess](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/freya_the_goddess/32/36835_2.png) [@Freya\_the\_Goddess](https://discourse.julialang.org/u/Freya_the_Goddess)
#### Post date: [September 21, 2022, 9:36am UTC](https://discourse.julialang.org/t/how-to-draw-circuits-using-circuits-jl/87472/3 "2022-09-21T09:36:41Z")

</div>

Alright then, thanks for this

---

<div class="post-metadata">

### Author: ![freemint](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/freemint/32/20013_2.png) [@freemint](https://discourse.julialang.org/u/freemint)
#### Post date: [April 6, 2023, 6:25am UTC](https://discourse.julialang.org/t/how-to-draw-circuits-using-circuits-jl/87472/4 "2023-04-06T06:25:13Z")

</div>

> [@zdenek\_hurak](#):
>
> I see no advantage is approaching it through an additional Julia layer.

I see a bunch of benefits here such as automating generating circuit images. Having an abstract Julia representation would be useful for generating visual circuit diagrams for practice problems. However that is possible through

```julia
show(io::IO,::MIME"text/circuitikz",c::Circuit)

```

which might be a better answer how to plot a circuit.
