Bokeh - Sumbu

Pada bab ini, kita akan membahas tentang berbagai jenis sumbu.

Sr Tidak Sumbu Deskripsi
1 Sumbu Kategoris Plot bokeh menampilkan data numerik di sepanjang sumbu x dan y. Untuk menggunakan data kategorikal di sepanjang sumbu, kita perlu menentukan FactorRange untuk menentukan dimensi kategoris salah satunya.
2 Sumbu Skala Log Jika terdapat hubungan hukum pangkat antara seri data x dan y, sebaiknya gunakan skala log pada kedua sumbu.
3 Sumbu Kembar Mungkin diperlukan untuk menunjukkan banyak sumbu yang mewakili rentang yang bervariasi pada satu gambar plot. Objek gambar dapat dikonfigurasi dengan mendefinisikanextra_x_range dan extra_y_range properti

Sumbu Kategoris

Dalam contoh sejauh ini, plot Bokeh menunjukkan data numerik di sepanjang sumbu x dan y. Untuk menggunakan data kategorikal di sepanjang sumbu, kita perlu menentukan FactorRange untuk menentukan dimensi kategoris salah satunya. Misalnya, untuk menggunakan string dalam daftar yang diberikan untuk sumbu x -

langs = ['C', 'C++', 'Java', 'Python', 'PHP']
fig = figure(x_range = langs, plot_width = 300, plot_height = 300)

Contoh

Dengan contoh berikut, plot batang sederhana ditampilkan yang menunjukkan jumlah siswa yang terdaftar untuk berbagai kursus yang ditawarkan.

from bokeh.plotting import figure, output_file, show
langs = ['C', 'C++', 'Java', 'Python', 'PHP']
students = [23,17,35,29,12]
fig = figure(x_range = langs, plot_width = 300, plot_height = 300)
fig.vbar(x = langs, top = students, width = 0.5)
show(fig)

Keluaran

Untuk menampilkan setiap batang dengan warna berbeda, setel properti warna fungsi vbar () ke daftar nilai warna.

cols = ['red','green','orange','navy', 'cyan']
fig.vbar(x = langs, top = students, color = cols,width=0.5)

Keluaran

Untuk merender batang bertumpuk vertikal (atau horizontal) menggunakan fungsi vbar_stack () atau hbar_stack (), setel properti stackers ke daftar bidang untuk ditumpuk secara berurutan dan properti sumber ke objek dict yang berisi nilai yang sesuai dengan setiap bidang.

Dalam contoh berikut, penjualan adalah kamus yang menunjukkan angka penjualan tiga produk dalam tiga bulan.

from bokeh.plotting import figure, output_file, show
products = ['computer','mobile','printer']
months = ['Jan','Feb','Mar']
sales = {'products':products,
   'Jan':[10,40,5],
   'Feb':[8,45,10],
   'Mar':[25,60,22]}
cols = ['red','green','blue']#,'navy', 'cyan']
fig = figure(x_range = products, plot_width = 300, plot_height = 300)
fig.vbar_stack(months, x = 'products', source = sales, color = cols,width = 0.5)
show(fig)

Keluaran

Plot batang yang dikelompokkan diperoleh dengan menentukan perpindahan visual batang dengan bantuan fungsi dodge () di bokeh.transform modul.

Itu dodge() functionmemperkenalkan offset relatif untuk setiap plot batang sehingga mencapai kesan visual grup. Dalam contoh berikut,vbar() glyph dipisahkan dengan offset 0,25 untuk setiap grup batang untuk bulan tertentu.

from bokeh.plotting import figure, output_file, show
from bokeh.transform import dodge
products = ['computer','mobile','printer']
months = ['Jan','Feb','Mar']
sales = {'products':products,
   'Jan':[10,40,5],
   'Feb':[8,45,10],
   'Mar':[25,60,22]}
fig = figure(x_range = products, plot_width = 300, plot_height = 300)
fig.vbar(x = dodge('products', -0.25, range = fig.x_range), top = 'Jan',
   width = 0.2,source = sales, color = "red")
fig.vbar(x = dodge('products', 0.0, range = fig.x_range), top = 'Feb',
   width = 0.2, source = sales,color = "green")
fig.vbar(x = dodge('products', 0.25, range = fig.x_range), top = 'Mar',
   width = 0.2,source = sales,color = "blue")
show(fig)

Keluaran

Sumbu Skala Log

Ketika nilai-nilai pada salah satu sumbu plot tumbuh secara eksponensial dengan nilai-nilai yang meningkat secara linier dari sumbu lain, seringkali data pada sumbu sebelumnya harus ditampilkan pada skala log. Misalnya, jika terdapat hubungan hukum pangkat antara seri data x dan y, sebaiknya menggunakan skala log pada kedua sumbu.

Fungsi figure () Bokeh.plotting API menerima x_axis_type dan y_axis_type sebagai argumen yang dapat ditentukan sebagai sumbu log dengan meneruskan "log" untuk nilai salah satu dari parameter ini.

Gambar pertama menunjukkan plot antara x dan 10x dalam skala linier. Di gambar kedua y_axis_type disetel ke 'log'

from bokeh.plotting import figure, output_file, show
x = [0.1, 0.5, 1.0, 1.5, 2.0, 2.5, 3.0]
y = [10**i for i in x]
fig = figure(title = 'Linear scale example',plot_width = 400, plot_height = 400)
fig.line(x, y, line_width = 2)
show(fig)

Keluaran

Sekarang ubah fungsi figure () untuk mengkonfigurasi y_axis_type = 'log'

fig = figure(title = 'Linear scale example',plot_width = 400, plot_height = 400, y_axis_type = "log")

Keluaran

Sumbu Kembar

Dalam situasi tertentu, mungkin diperlukan untuk menunjukkan banyak sumbu yang mewakili rentang yang berbeda-beda pada satu gambar plot. Objek gambar dapat dikonfigurasi dengan mendefinisikanextra_x_range dan extra_y_rangeproperti. Saat menambahkan mesin terbang baru ke gambar, rentang bernama ini digunakan.

Kami mencoba untuk menampilkan kurva sinus dan garis lurus di plot yang sama. Kedua mesin terbang tersebut memiliki sumbu y dengan jarak yang berbeda. Seri data x dan y untuk kurva dan garis sinus diperoleh sebagai berikut -

from numpy import pi, arange, sin, linspace
x = arange(-2*pi, 2*pi, 0.1)
y = sin(x)
y2 = linspace(0, 100, len(y))

Di sini, plot antara x dan y mewakili hubungan sinus dan plot antara x dan y2 adalah garis lurus. Objek Gambar didefinisikan dengan y_range eksplisit dan mesin terbang garis yang mewakili kurva sinus ditambahkan sebagai berikut -

fig = figure(title = 'Twin Axis Example', y_range = (-1.1, 1.1))
fig.line(x, y, color = "red")

Kami membutuhkan rentang y ekstra. Ini didefinisikan sebagai -

fig.extra_y_ranges = {"y2": Range1d(start = 0, end = 100)}

Untuk menambahkan sumbu y tambahan di sisi kanan, gunakan metode add_layout (). Tambahkan mesin terbang baris baru yang mewakili x dan y2 ke gambar.

fig.add_layout(LinearAxis(y_range_name = "y2"), 'right')
fig.line(x, y2, color = "blue", y_range_name = "y2")

Ini akan menghasilkan plot dengan sumbu y kembar. Kode lengkap dan hasilnya adalah sebagai berikut -

from numpy import pi, arange, sin, linspace
x = arange(-2*pi, 2*pi, 0.1)
y = sin(x)
y2 = linspace(0, 100, len(y))
from bokeh.plotting import output_file, figure, show
from bokeh.models import LinearAxis, Range1d
fig = figure(title='Twin Axis Example', y_range = (-1.1, 1.1))
fig.line(x, y, color = "red")
fig.extra_y_ranges = {"y2": Range1d(start = 0, end = 100)}
fig.add_layout(LinearAxis(y_range_name = "y2"), 'right')
fig.line(x, y2, color = "blue", y_range_name = "y2")
show(fig)

Keluaran