AMcoder - javascript, python, java, html, php, sql

gnuplot ավտոմատ կույտ գծապատկեր

Ահա իմ տվյալների հավաքածուն.

type size name
label_0 1 nameOfData_0
label_0 2 nameOfData_1
label_0 3 nameOfData_2
label_1 2 nameOfData_3
label_2 1 nameOfData_4
label_0 2 nameOfData_5
label_1 3 nameOfData_6
label_3 2 nameOfData_7
label_3 1 nameOfData_8

Ես կցանկանայի, որ սյուժեն այսպիսի տեսք ունենա.

մուտքագրեք պատկերի նկարագրությունը այստեղ

Ես կցանկանայի, որ յուրաքանչյուր պիտակ լիներ մի կույտ, և յուրաքանչյուր nameOfData_X տեղավորվեր ճիշտ փաթեթում՝ ըստ իր չափի: Հնարավորության դեպքում ավելացրեք նաև լեգենդը կույտի յուրաքանչյուր տարրի համար:

Ես գիտեմ, որ կարող եմ վերափոխել տվյալները gnuplot-ի միջոցով հեշտությամբ մշակելու համար, բայց չեմ ուզում:

Կա՞ն գաղափարներ, թե ինչպես կարող եմ ցուցադրել այս գրաֆիկը gnuplot-ի միջոցով:

Շնորհակալություն ձեր օգնության համար:

11.03.2021

Պատասխանները:


1

Միգուցե դրան հասնելու միջոց կա gnuplot-ի ներկառուցված stacked histogram ոճով, ստուգեք help histograms: Հետևյալ լուծումը այնքան էլ ակնհայտ չէ, բայց կարծես տալիս է ցանկալի արդյունքը և օգտագործում է գծագրման ոճը with boxxyerror (ստուգեք help boxxyerror):

  1. Ձեզ անհրաժեշտ է 1-ին սյունակի եզակի տարրերի ցանկը: Այստեղ այն կլինի առաջին երևույթների հերթականությամբ:
  2. հանգույցներում գծագրման ժամանակ դուք ավելացնում եք ձեր ներդրումները՝ կախված ֆիլտրի գործառույթից myAdd():
  3. Դուք փոխում եք գույնը, երբ գումարումը զրո է (dy=0):
  4. Դուք պիտակներ եք ավելացնում նույն ձևով՝ օֆսեթով

Այս կոդը, հավանաբար, կարող է պարզեցվել, բայց կարող է գործել որպես ելակետ:

Կոդ՝

### "manual" stacked histogram
reset session


$Data <<EOD
type size name
label_0 1 nameOfData_0
label_0 2 nameOfData_1
label_0 3 nameOfData_2
label_1 2 nameOfData_3
label_2 1 nameOfData_4
label_0 2 nameOfData_5
label_1 3 nameOfData_6
label_3 2 nameOfData_7
label_3 1 nameOfData_8
EOD

# get a unique list from datablock column 1
set table $Dummy
    Headers = 1
    addToList(list,col) = list.( strstrt(list,'"'.strcol(col).'"') > 0 ? '' : \
                          ' "'.strcol(col).'"')
    plot Uniques='' $Data u (Uniques=addToList(Uniques,1),'') skip Headers w table
unset table
N = words(Uniques)
Unique(i) = word(Uniques,i)

set xrange [1:N]
set xtics out noenhanced
set grid x,y
set offsets 0.5,0.5,0.5,0
unset key

set style fill transparent solid 0.7 border
myBoxWidth = 0.8
myAdd(colD,colF,i) = strcol(colF) eq Unique(i) ? column(colD) : 0
myLabel(col1,col2) = dy==0 ? '' : sprintf("%s\n%g",strcol(col1),column(col2))

plot for [i=1:N] y=y0=(c=1,0) $Data u (i):(dy=myAdd(2,1,i), y=y+dy,(y0+y)/2.): \
         (myBoxWidth/2.):(y0=y,dy/2.):(dy==0?c:c=c+1) skip Headers w boxxy lc variable, \
     for [i=1:N] y=y0=0 $Data u (i):(dy=myAdd(2,1,i), y=y+dy,(y0+y)/2.): \
         (y0=y,myLabel(3,2)):xtic(Unique(i)) skip Headers w labels offset 0,0.5 noenhanced
### end of code

Արդյունք՝

մուտքագրեք պատկերի նկարագրությունը այստեղ

12.03.2021
  • Զարմանալի! Շատ շնորհակալ եմ, հենց այն, ինչ փնտրում էի: 12.03.2021
  • Ուրախ եմ, որ կարող էի օգնել: Շնորհակալություն StackOverflow-ի համար = ընդունել և/կամ կողմ քվեարկել: 12.03.2021
  • Նոր նյութեր

    Օգտագործելով Fetch Vs Axios.Js-ը՝ HTTP հարցումներ կատարելու համար
    JavaScript-ը կարող է ցանցային հարցումներ ուղարկել սերվեր և բեռնել նոր տեղեկատվություն, երբ դա անհրաժեշտ լինի: Օրինակ, մենք կարող ենք օգտագործել ցանցային հարցումը պատվեր ներկայացնելու,..

    Տիրապետել հանգստության արվեստին. մշակողի ուղեցույց՝ ճնշման տակ ծաղկելու համար
    Տիրապետել հանգստության արվեստին. մշակողի ուղեցույց՝ ճնշման տակ ծաղկելու համար Ինչպե՞ս հանգստացնել ձեր միտքը և աշխատեցնել ձեր պրոցեսորը: Ինչպես մնալ հանգիստ և զարգանալ ճնշման տակ...

    Մեքենայի ուսուցում բանկային և ֆինանսների ոլորտում
    Բարդ, խելացի անվտանգության համակարգերը և հաճախորդների սպասարկման պարզեցված ծառայությունները բիզնեսի հաջողության բանալին են: Ֆինանսական հաստատությունները, մասնավորապես, պետք է առաջ մնան կորի..

    Ես AI-ին հարցրի կյանքի իմաստը, այն ինչ ասում էր, ցնցող էր:
    Այն պահից ի վեր, երբ ես իմացա Արհեստական ​​ինտելեկտի մասին, ես հիացած էի այն բանով, թե ինչպես է այն կարողանում հասկանալ մարդկային նորմալ տեքստը, և այն կարող է առաջացնել իր սեփական արձագանքը դրա..

    Ինչպես սովորել կոդավորումը Python-ում վագրի պես:
    Սովորելու համար ծրագրավորման նոր լեզու ընտրելը բարդ է: Անկախ նրանից, թե դուք սկսնակ եք, թե առաջադեմ, դա օգնում է իմանալ, թե ինչ թեմաներ պետք է սովորել: Ծրագրավորման լեզվի հիմունքները, դրա..

    C++-ի օրական բիթ(ե) | Ամենաերկար պալինդրոմային ենթաշարը
    C++ #198-ի ամենօրյա բիթ(ե), Ընդհանուր հարցազրույցի խնդիր. Ամենաերկար պալինդրոմային ենթատող: Այսօր մենք կանդրադառնանք հարցազրույցի ընդհանուր խնդրին. Ամենաերկար palindromic substring...

    Kydavra ICAReducer՝ ձեր տվյալների ծավալայինությունը նվազեցնելու համար
    Ի՞նչ է ICAReducer-ը: ICAReducer-ն աշխատում է հետևյալ կերպ. այն նվազեցնում է նրանց միջև բարձր փոխկապակցված հատկանիշները մինչև մեկ սյունակ: Բավականին նման է PCAreducer-ին, չնայած այն..