JosieG
March 29, 2023, 4:20am
1
I got this warning message from “using UnicodePlots” :
WARNING: using UnicodePlots.xlabel! in module Main conflicts with an existing identifier.
And when I do the following code, what can I get is not a real plot:
unicodeplots()
plt = plot(x, y)
display(plt)
It only returns Plot{Plots.UnicodePlotsBackend() n=3}
Is there anyway to get a real plot?
lmiq
March 29, 2023, 12:06pm
2
Seems that you are loading more than one plotting package at once (Plots
and UnicodePlots
). I don’t know where the unicodeplots()
command you posted there comes from, but if you really need Plots
to be loaded there, then import UnicodePlots
instead of using
and qualify the function calls:
julia> using Plots # not used here
julia> import UnicodePlots
julia> plt = UnicodePlots.lineplot(rand(10),rand(10))
┌────────────────────────────────────────┐
0.9 │⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀│
│⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⡇⢉⠢⢄⠀⠀⠀⠀⠀⠀⠀⠀│
│⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⡇⢸⡆⠀⠉⠢⢄⠀⠀⠀⠀⠀│
│⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⡇⠀⡿⡀⠀⠀⠀⠉⠒⡄⠀⠀│
│⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⡇⠀⢇⢣⠀⠀⠀⠀⡜⠀⠀⠀│
│⠢⣀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⡇⠀⢸⠀⢇⠀⠀⡰⠁⠀⠀⠀│
│⠀⣀⣑⠢⣀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⡇⠀⠘⡄⠸⡄⢠⠃⠀⠀⠀⠀│
│⠀⠀⠈⠉⠛⠻⠶⣦⡤⢄⣀⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⡇⠀⠀⡇⠀⢱⡇⠀⠀⠀⠀⠀│
│⠀⠀⠀⠀⠀⠀⠀⠀⠉⠫⢖⠚⠭⢕⣒⠢⠤⢄⣀⡀⠀⠀⠀⠀⠀⠀⠀⠀⡇⠀⠀⢱⠀⡎⢳⡀⠀⠀⠀⠀│
│⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠉⠒⢄⡀⠉⠑⠒⠤⢌⣉⠑⠒⠢⠤⢄⣀⡀⡇⠀⠀⢸⡜⠀⠈⣧⠀⠀⠀⠀│
│⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠒⢄⡀⠀⠀⠀⠉⠑⠒⠤⢄⣀⡈⡏⠑⠒⠢⠥⢄⣀⡘⣧⠀⠀⠀│
│⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠒⠤⡀⠀⠀⠀⠀⠀⠀⠈⢹⠒⠢⠤⣀⡀⠀⠈⢹⠃⠀⠀│
│⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠑⠤⡀⠀⠀⠀⠀⢸⠀⠀⠀⠀⠈⠉⠒⠢⠇⠀⠀│
│⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠑⠢⣀⠀⢸⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀│
0 │⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠑⠺⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀│
└────────────────────────────────────────┘
⠀0⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀1⠀
julia> display(plt)
┌────────────────────────────────────────┐
0.9 │⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀│
│⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⡇⢉⠢⢄⠀⠀⠀⠀⠀⠀⠀⠀│
│⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⡇⢸⡆⠀⠉⠢⢄⠀⠀⠀⠀⠀│
│⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⡇⠀⡿⡀⠀⠀⠀⠉⠒⡄⠀⠀│
│⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⡇⠀⢇⢣⠀⠀⠀⠀⡜⠀⠀⠀│
│⠢⣀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⡇⠀⢸⠀⢇⠀⠀⡰⠁⠀⠀⠀│
│⠀⣀⣑⠢⣀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⡇⠀⠘⡄⠸⡄⢠⠃⠀⠀⠀⠀│
│⠀⠀⠈⠉⠛⠻⠶⣦⡤⢄⣀⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⡇⠀⠀⡇⠀⢱⡇⠀⠀⠀⠀⠀│
│⠀⠀⠀⠀⠀⠀⠀⠀⠉⠫⢖⠚⠭⢕⣒⠢⠤⢄⣀⡀⠀⠀⠀⠀⠀⠀⠀⠀⡇⠀⠀⢱⠀⡎⢳⡀⠀⠀⠀⠀│
│⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠉⠒⢄⡀⠉⠑⠒⠤⢌⣉⠑⠒⠢⠤⢄⣀⡀⡇⠀⠀⢸⡜⠀⠈⣧⠀⠀⠀⠀│
│⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠒⢄⡀⠀⠀⠀⠉⠑⠒⠤⢄⣀⡈⡏⠑⠒⠢⠥⢄⣀⡘⣧⠀⠀⠀│
│⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠒⠤⡀⠀⠀⠀⠀⠀⠀⠈⢹⠒⠢⠤⣀⡀⠀⠈⢹⠃⠀⠀│
│⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠑⠤⡀⠀⠀⠀⠀⢸⠀⠀⠀⠀⠈⠉⠒⠢⠇⠀⠀│
│⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠑⠢⣀⠀⢸⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀│
0 │⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠑⠺⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀│
└────────────────────────────────────────┘
⠀0⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀1⠀
(you may not need Plots
at all there, then just using UnicodePlots
and the direct calls to its functions should work - but plot
is not one of its functions, it is lineplot
instead).
JosieG
March 29, 2023, 1:49pm
3
I’m trying to reproduce your result, but I got such plot.
lmiq
March 29, 2023, 2:41pm
4
Ah, you are using a notebook. Probably then you should not use unicodeplots at all. Just use:
using Plots
plt = plot(rand(10),rand(10))
display(plt)
JosieG
March 29, 2023, 4:31pm
5
I have changed it to vscode, but I got new error that “Warning: _display is not defined for this backend.”, do you mind telling me which editor are you using?
t-bltg
March 29, 2023, 4:56pm
6
This is the command to activate the unicodeplots
backend from within Plots
.
@JosieG , you don’t need using UnicodePlots
if your are using Plots
:
using Plots
unicodeplots()
plot(1:2)
should suffice.
For the fonts issue on windows, see GitHub - JuliaPlots/UnicodePlots.jl: Unicode-based scientific plotting for working in the terminal or https://github.com/JuliaPlots/UnicodePlots.jl/search?q=font&type=issues .
If your font doesn’t support braille patterns, you can fallback to using ASCII characters:
using Plots
unicodeplots()
plot(1:2; extra_kwargs=Dict(:subplot=>(; canvas=:dot, border=:ascii)))
plot(1:2, extra_kwargs=Dict(:subplot=>(; canvas=:ascii, border=:ascii))) # alternative canvas
JosieG
March 29, 2023, 5:02pm
7
Thanks for your reply. I have tried
using Plots
unicodeplots()
plot(1:2)
in jupyter notebook, but still got Plot{Plots.UnicodePlotsBackend() n=1}
And I tried it in vscode, then I got Warning: _display is not defined for this backend.
And no plot shows up.
Even I tried the code below in vscode
using Plots
unicodeplots()
plot(1:2; extra_kwargs=Dict(:subplot=>(; canvas=:dot, border=:ascii)))
plot(1:2, extra_kwargs=Dict(:subplot=>(; canvas=:ascii, border=:ascii))) # alternative canvas
I can still only get Warning: _display is not defined for this backend.
t-bltg
March 29, 2023, 5:16pm
8
Can you try explicitly call display
on the plot object ?
using Plots
unicodeplots()
p = plot(1:2);
display(p)
gui(p) # alternatively
JosieG
March 31, 2023, 6:34pm
9
Still warning: Warning: _display is not defined for this backend.