Pada awalnya, saya menghadapi masalah untuk menampilkan urutan kategori yang diinginkan pada axis y dalam sebuah histogram menggunakan Plotly Express. Saya telah mencoba berbagai kombinasi kode, namun hasilnya tidak sesuai dengan keinginan saya.
Saya ingin membuat chart dengan x-axis sebagai waktu/tanggal dan y-axis sebagai kategori. Namun, plotly tidak dapat menampilkan urutan kategori yang diinginkan pada axis y. Saya telah mencoba menggunakan fitur category_orders
dalam plotly, namun hasilnya tetap tidak sesuai.
Berikut adalah kode yang saya gunakan:
import plotly.graph_objects as go
import plotly.express as px
yaxis_List = {"01", "02", "03", "04", "5A", "5B", "06", "07", "08", "09", "10", "30", "31", "40", "41", "50", "51"}
fig = go.Figure([go.Scatter(x=df['TIMESTAMP'], y=df['STEP'], category_orders=yaxis_List)])
fig.update_yaxes(type="category", categoryarray=tuple(yaxis_List), categoryorder='array')
fig.update_yaxes(type="category", category_orders=yaxis_List)
Namun, hasilnya tetap tidak sesuai. Saya lalu mencoba menggunakan fungsi bar
dari Plotly Express dengan mengatur urutan kategori pada axis y.
import numpy as np
import plotly.express as px
import pandas as pd
categories_ordered = np.array(["01", "02", "03", "04", "5A", "5B", "06", "07", "08", "09", "10", "30", "31", "40", "41", "50", "51"])
categories_shuffled = categories_ordered.copy()
np.random.shuffle(categories_shuffled)
values = np.arange(categories_shuffled.shape[0])
fig = px.bar(
pd.DataFrame(np.c_[categories_shuffled, values], columns=["x", "y"]),
x="x",
y="y",
category_orders={"y": categories_ordered}
)
fig.show()
Namun, hasilnya tetap tidak sesuai. Saya lalu mencoba menggunakan fungsi bar
dengan mengatur orientasi chart menjadi horizontal.
px.bar(
pd.DataFrame(np.c_[vals_shuffled, values], columns=["x", "y"]),
x="y",
y="x",
category_orders={"x": vals_ordered},
orientation="h"
)
Dan akhirnya, saya menemukan solusi yang sesuai dengan keinginan saya. Berikut adalah kode yang berfungsi:
import numpy as np
import plotly.express as px
import pandas as pd
categories_ordered = np.array(["01", "02", "03", "04", "5A", "5B", "06", "07", "08", "09", "10", "30", "31", "40", "41", "50", "51"])
categories_shuffled = categories_ordered.copy()
np.random.shuffle(categories_shuffled)
values = np.arange(categories_shuffled.shape[0])
fig = px.bar(
pd.DataFrame(np.c_[categories_shuffled, values], columns=["x", "y"]),
x="y",
y="x",
category_orders={"y": categories_ordered}
)
fig.show()
Dalam kode tersebut, saya menggunakan fungsi bar
dari Plotly Express dan mengatur urutan kategori pada axis y menggunakan fitur category_orders
. Hasilnya adalah chart yang sesuai dengan keinginan saya.