Plot Batang Bertumpuk dengan Python

Saya mengikuti tautan ini untuk mempelajari https://plot.ly/python/bar-charts/ plot grafik dengan python menggunakan plotly.

Sesuai kebutuhan saya, saya memiliki contoh data formulir

data=[                                               
      ('2018-04-17','22:00:00',['p1',5],['p2',10],['p3',15]),
      ('2018-04-18','20:00:00',['p3',5],['p4',10],['p3',15])
     ]

Jadi saya ingin membuat grafik batang bertumpuk dari data ini menggunakan plotly. Pada sumbu X, dua nilai tupel pertama akan diplot (tanggal dan waktu).

Pada sumbu y, grafik bertumpuk memiliki tiga nilai dengan tinggi batang yang terhubung dengan nilai tersebut (yang akan ditampilkan saat mengarahkan mouse). Total ada 4 nilai dalam data ini (p1,p2,p3,p4), empat berbeda warna akan digunakan untuk mereka.

Apa yang telah saya coba : Saya pada dasarnya mencoba memukul dan mencoba menggunakan metode yang ditunjukkan seperti mengambil dua nilai data menggunakan objek grafik offline plotly. Tetapi saya tidak dapat menggambarnya.

Adakah yang bisa memberikan saran untuk tumpukan histogram data ini. Saya harus melihat file yang dihasilkan di browser dan saya menggunakan plotly dalam mode offline.

Kode apa yang saya coba:

    import plotly
    import plotly.graph_objs as go

    plotly.offline.init_notebook_mode(connected=True)


    data=[                                               
          ('2018-04-17','22:00:00',['p1',5],['p2',10],['p3',15]),
          ('2018-04-18','20:00:00',['p3',5],['p4',10],['p3',15])
         ]


    x_axis=[]
    y_axis=[]
    plot_data=[]
    for d in data
        date,time=d[0],d[1]
        x_axis.append(d[0]+" "+d[1])
        for j in range (2, len(d))
            y_axis.append(d[j][1])

        trace[]=go.Bar(
                x=x_axis,
                y=y_axis)
        plot_data.append(trace)

    plotly.offline.plot(plot_data, filename='stacked-bar')

person Community    schedule 17.04.2018    source sumber
comment
@Alfe: Saya mencoba. Di mana saya terjebak adalah data (p1,p2,p3,p4) tidak konstan hingga keluar. Seperti satu tupel memiliki p1,p2,p3 lainnya memiliki p4,p5,p6. Seandainya sama, saya dapat dengan mudah membaca list dan pertama-tama baca indeks string dan baca nilai indeks dalam daftar. Saya sebenarnya melakukan ini untuk data lain dari proyek saya.   -  person    schedule 17.04.2018
comment
Alfe: Benar. Bisakah Anda menyarankan jika bukan kode :)   -  person    schedule 18.04.2018


Jawaban (1)


Anda perlu menggunakan fig dan layout. Di layout Anda menetapkan barmode sama dengan stack:

import plotly
import plotly.graph_objs as go
plotly.offline.init_notebook_mode(connected=True)

data=[                                               
      ('2018-04-17','22:00:00',['p1',5],['p2',10],['p3',15]),
      ('2018-04-18','20:00:00',['p3',5],['p4',10],['p3',15])
     ]
x_axis=[]
y_axis=[]
plot_data=[]
for d in data:
    date,time=d[0],d[1]
    x_axis.append(d[0]+" "+d[1])
    for j in range (2, len(d)):
        y_axis.append(d[j][1])
        trace=go.Bar(
            x=x_axis,
            y=y_axis)
        plot_data.append(trace)
layout = go.Layout(barmode="stack")
fig = go.Figure(data=plot_data, layout=layout)
plotly.offline.plot(fig, filename='stacked-bar.html')

Dan keluaran Anda akan terlihat seperti itu: Itu yang kamu cari, ya?)

person Dmitriy Kisil    schedule 19.08.2018
comment
Apakah jawaban saya membantu Anda, @ pengguna7350953? - person Dmitriy Kisil; 21.08.2018