Mengatur Urutan Kategori pada Axis Y dalam Plotly Python

Mengatur Urutan Kategori pada Axis Y dalam Plotly Python

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.

Leave a comment