pgfplots: 棒グラフのバーの色を循環させて読みやすさを向上、データはファイルからロード

pgfplots: 棒グラフのバーの色を循環させて読みやすさを向上、データはファイルからロード

下図のような信頼区間スタイルの棒グラフがあります。読みやすさを向上させるために、各棒 (および各ラベル) の色を (色のサイクルから) 変える方法はありますか? 私が見つけることができたすべての回答では、ファイルからデータをロードするときに foreach またはその他の構造を使用しています。

トリックチャート

\documentclass[tikz]{standalone}
\usepackage{pgfplots,filecontents}
\pgfplotsset{compat=newest}

\begin{filecontents}{ntrick.dat}
CHAMP   X   Y   YL  YH
YASUO   1   0.4107142857    0.1190484959    0.1305120931
AURELION-SOL    2   0.2222222222    0.1161512673    0.1853507324
DARIUS  3   0.1941747573    0.06481265042   0.08680517491
KOG-MAW 4   0.1785714286    0.09978757028   0.1773464869
TALIYAH 5   0.1666666667    0.07971256627   0.1291143337
GRAGAS  6   0.156626506 0.06274727049   0.09312680322
ZED 7   0.1492537313    0.06611188926   0.1041524436
NIDALEE 8   0.1304347826    0.06026929692   0.09925036651
URGOT   9   0.1282051282    0.07217777872   0.1388553622
OLAF    10  0.12    0.05556701031   0.0925984252
MORDEKAISER 11  0.1194029851    0.04455530856   0.06576953551
IVERN   12  0.1136363636    0.06410928774   0.1261579878
ORIANNA 13  0.1111111111    0.05918159294   0.1108383782
ANIVIA  14  0.1111111111    0.03129912354   0.04153724967
FIORA   15  0.1076923077    0.04245156691   0.06497205726
KHA-ZIX 16  0.1058823529    0.04917058778   0.08325467346
SINGED  17  0.1027777778    0.02728978089   0.03567787553
TRYNDAMERE  18  0.09979633401   0.02348415136   0.02969794746
REK-SAI 19  0.09523809524   0.06871988644   0.1939077434
JARVAN-IV   20  0.09090909091   0.04412322921   0.07834657977
TALON   21  0.08450704225   0.03550617218   0.05739509477
IRELIA  22  0.08438818565   0.02909757023   0.0423561962
RAMMUS  23  0.0843373494    0.04288454022   0.07965976404
JAYCE   24  0.08421052632   0.03171308747   0.04819352141
JANNA   25  0.08316008316   0.02149690193   0.02810249116
RIVEN   26  0.08227114716   0.01653443314   0.02023694848
KALISTA 27  0.08108108108   0.05312101468   0.1319288439
KASSADIN    28  0.08108108108   0.05312101468   0.1319288439
KLED    29  0.07894736842   0.0422638629    0.08278198352
FIZZ    30  0.07894736842   0.03321198596   0.05397044569
RUMBLE  31  0.0780141844    0.03389651291   0.05628097579
EVELYNN 32  0.07751937984   0.02678004714   0.03917686682
CASSIOPEIA  33  0.07692307692   0.05041616285   0.1262906544
TWISTED-FATE    34  0.07446808511   0.03792996909   0.07134568192
KARTHUS 35  0.07246376812   0.0411164589    0.08621220606
JAX 36  0.0701754386    0.02652196482   0.04076629401
SHACO   37  0.06944444444   0.01803462731   0.0237397103
AKALI   38  0.06784660767   0.02221503378   0.03189974224
GANGPLANK   39  0.06443298969   0.02041233594   0.02895290043
GALIO   40  0.0625  0.05138094269   0.2207926837
DRAVEN  41  0.06162464986   0.0154014113    0.020093429
ELISE   42  0.06    0.03938540364   0.1021734337
TEEMO   43  0.05967450271   0.01687076741   0.02294629924
SHEN    44  0.0593220339    0.03029263859   0.05808131626
KINDRED 45  0.05882352941   0.03861725655   0.10042521
VEIGAR  46  0.05479452055   0.02677117999   0.04959930475
VEL-KOZ 47  0.05421686747   0.01965055354   0.02984893564
AATROX  48  0.05263157895   0.03457161085   0.09106619766
UDYR    49  0.05154639175   0.02933066833   0.06349869782
RENEKTON    50  0.05138339921   0.02111228283   0.03453227035
FIDDLESTICKS    51  0.05058365759   0.02078745972   0.03402520877
SKARNER 52  0.05    0.03617962285   0.1150417082
TARIC   53  0.05    0.02444971  0.04555204298
BLITZCRANK  54  0.04838709677   0.01884791975   0.02990391825
NOCTURNE    55  0.04807692308   0.02736918613   0.05956655138
XERATH  56  0.048   0.02581829682   0.05277237376
AHRI    57  0.04761904762   0.02329534513   0.04352172416
RYZE    58  0.046875    0.02521745111   0.05162375989
SION    59  0.046875    0.02202104919   0.0397979158
KAYLE   60  0.0462962963    0.02095782855   0.03681422832
SEJUANI 61  0.04545454545   0.03289969909   0.1058981698
ANNIE   62  0.04545454545   0.0181882452    0.02938740412
MASTER-YI   63  0.04545454545   0.01728501618   0.02709939324
SORAKA  64  0.04387990762   0.01561125405   0.0236335255
GNAR    65  0.04347826087   0.03147306728   0.1018469683
HEIMERDINGER    66  0.04347826087   0.01903019573   0.0326866588
LULU    67  0.04329004329   0.01960870772   0.03455066835
PANTHEON    68  0.04237288136   0.01919678035   0.03385662534
VLADIMIR    69  0.04210526316   0.02561175718   0.06120503817
LISSANDRA   70  0.04166666667   0.03427340131   0.1607555958
NUNU    71  0.03846153846   0.03163972948   0.1504702315
SYNDRA  72  0.03846153846   0.03163972948   0.1504702315
LEE-SIN 73  0.03773584906   0.02296524095   0.05529969278
POPPY   74  0.03738317757   0.02275151504   0.05481869533
SWAIN   75  0.03731343284   0.01692164376   0.02999879395
WUKONG  76  0.0367816092    0.01401665416   0.02212664086
KENNEN  77  0.03636363636   0.02213355578   0.05342449783
MALZAHAR    78  0.03636363636   0.02213355578   0.05342449783
DIANA   79  0.03535353535   0.01812488744   0.03581188416
ZAC 80  0.03465346535   0.01776801123   0.0351374375
CHO-GATH    81  0.03355704698   0.01914015326   0.04258779118
TWITCH  82  0.03355704698   0.01914015326   0.04258779118
MAOKAI  83  0.03333333333   0.02742489534   0.1333741806
ZILEAN  84  0.03300330033   0.01497977204   0.02667319641
HECARIM 85  0.0303030303    0.02493375821   0.1228875864
TAHM-KENCH  86  0.0303030303    0.01994457841   0.05503520086
CORKI   87  0.02941176471   0.02420099278   0.1197472575
SHYVANA 88  0.02884615385   0.01898814955   0.05255561546
MISS-FORTUNE    89  0.02857142857   0.01346866316   0.02482878681
AMUMU   90  0.02830188679   0.01863077815   0.05162511675
YORICK  91  0.02777777778   0.02012691631   0.06796580391
JHIN    92  0.02777777778   0.01585583158   0.03559117863
BRAND   93  0.02713178295   0.01392843003   0.02780376949
NASUS   94  0.02688172043   0.01534615471   0.03449402517
BARD    95  0.02659574468   0.01518346633   0.03414316837
SONA    96  0.02616516762   0.0075710332    0.01053846419
EKKO    97  0.02608695652   0.01407759625   0.02964868666
GRAVES  98  0.02469135802   0.01789391311   0.06093755395
VIKTOR  99  0.0243902439    0.02007182363   0.1015632262
QUINN   100 0.02395209581   0.01459922489   0.03600836211
THRESH  101 0.02151639344   0.007401003996  0.0111529219
NAMI    102 0.02080624187   0.007959442523  0.01272334431
ALISTAR 103 0.01973684211   0.01300231219   0.03667993033
LEONA   104 0.01946472019   0.007448633761  0.01191928365
XIN-ZHAO    105 0.01915708812   0.01094737104   0.0248968875
ZYRA    106 0.01893095768   0.00707839643   0.01117684306
KARMA   107 0.01826484018   0.01113976474   0.0277491751
VAYNE   108 0.01739130435   0.0126090522    0.04381007213
GAREN   109 0.015   0.009885854816  0.02816648056
DR-MUNDO    110 0.01470588235   0.01210526575   0.06400572126
VOLIBEAR    111 0.01449275362   0.009551973694  0.02724416193
MALPHITE    112 0.01307189542   0.00947983485   0.03333298359
EZREAL  113 0.0125  0.009065400844  0.03192626158
VARUS   114 0.01149425287   0.009462397449  0.05077923199
VI  115 0.01123595506   0.009249822963  0.04969798316
ILLAOI  116 0.01052631579   0.008665787426  0.04671377745
MORGANA 117 0.009538950715  0.00516009818   0.01111468513
JINX    118 0.008645533141  0.005701054612  0.01646139386
BRAUM   119 0.008547008547  0.006200021825  0.02207584684
CAITLYN 120 0.006756756757  0.005563056588  0.03052121355
NAUTILUS    121 0.005730659026  0.004157729224  0.01492054801
LUX 122 0.002364066194  0.001946639235  0.01090414574
CAMILLE 123 0   0   0.6576280471
AZIR    124 0   0   0.1245590371
SIVIR   125 0   0   0.1135170914
LEBLANC 126 0   0   0.1015179062
RENGAR  127 0   0   0.08380161251
ZIGGS   128 0   0   0.08201257002
TRUNDLE 129 0   0   0.07707617733
WARWICK 130 0   0   0.06314100878
LUCIAN  131 0   0   0.06017393048
TRISTANA    132 0   0   0.05273909414
KATARINA    133 0   0   0.03259969315
ASHE    134 0   0   0.03028659367
\end{filecontents}

\begin{document}
\begin{tikzpicture}
\sffamily
\begin{axis}[
    xtick=data,% crucial line for the xticklabels directive
    xticklabels from table={ntrick.dat}{CHAMP},
    xticklabel style={rotate=90,font=\tiny},
    xmin=-2,
    xmax=137,
    ymin=-0.02,
    ymax=0.6,
    height=480,
    width=820
]
\draw
    (axis cs:\pgfkeysvalueof{/pgfplots/xmin},0) --
    (axis cs:\pgfkeysvalueof{/pgfplots/xmax},0);

\addplot [
    only marks, mark=o,
    error bars/.cd, y dir = minus, y explicit
]
table [
    x=X,
    y=Y,
    y error=YL
] {ntrick.dat};

\addplot [
    only marks, mark=o,
    error bars/.cd, y dir = plus, y explicit
]
table [
    x=X,
    y=Y,
    y error=YH
] {ntrick.dat};

\end{axis}
\end{tikzpicture}
\end{document}

答え1

ここでは、各データ ポイントの色を変更するという直接的な質問には答えませんが、それによって読みやすさが向上する理由がわかりません。

しかし、主要読みやすさを向上させるために、2 つの方法を提案します。1 つ目は、5 つのエントリごとに垂直線を追加してグループ化し、データ ポイントをたどるためのガイドラインを作成することです。2 つ目は、グループ内の自分の位置を示すという同じ目的を持つ色付きの四角形を背景に追加することです。

個人的には、純粋な垂直線ほど邪魔にならないため、2 番目のオプションを好みます。純粋な垂直線は、大きなエラー バーと誤解される可能性があり、以下に示すようなものになります。

動作の詳細については、コード内のコメントを参照してください。

% used PGFPlots v1.14
    \begin{filecontents}{ntrick.dat}
        CHAMP   X   Y   YL  YH
        YASUO   1   0.4107142857    0.1190484959    0.1305120931
        AURELION-SOL    2   0.2222222222    0.1161512673    0.1853507324
        DARIUS  3   0.1941747573    0.06481265042   0.08680517491
        KOG-MAW 4   0.1785714286    0.09978757028   0.1773464869
        TALIYAH 5   0.1666666667    0.07971256627   0.1291143337
        GRAGAS  6   0.156626506 0.06274727049   0.09312680322
        ZED 7   0.1492537313    0.06611188926   0.1041524436
        NIDALEE 8   0.1304347826    0.06026929692   0.09925036651
        URGOT   9   0.1282051282    0.07217777872   0.1388553622
        OLAF    10  0.12    0.05556701031   0.0925984252
        MORDEKAISER 11  0.1194029851    0.04455530856   0.06576953551
        IVERN   12  0.1136363636    0.06410928774   0.1261579878
        ORIANNA 13  0.1111111111    0.05918159294   0.1108383782
        ANIVIA  14  0.1111111111    0.03129912354   0.04153724967
        FIORA   15  0.1076923077    0.04245156691   0.06497205726
        KHA-ZIX 16  0.1058823529    0.04917058778   0.08325467346
        SINGED  17  0.1027777778    0.02728978089   0.03567787553
        TRYNDAMERE  18  0.09979633401   0.02348415136   0.02969794746
        REK-SAI 19  0.09523809524   0.06871988644   0.1939077434
        JARVAN-IV   20  0.09090909091   0.04412322921   0.07834657977
        TALON   21  0.08450704225   0.03550617218   0.05739509477
        IRELIA  22  0.08438818565   0.02909757023   0.0423561962
        RAMMUS  23  0.0843373494    0.04288454022   0.07965976404
        JAYCE   24  0.08421052632   0.03171308747   0.04819352141
        JANNA   25  0.08316008316   0.02149690193   0.02810249116
        RIVEN   26  0.08227114716   0.01653443314   0.02023694848
        KALISTA 27  0.08108108108   0.05312101468   0.1319288439
        KASSADIN    28  0.08108108108   0.05312101468   0.1319288439
        KLED    29  0.07894736842   0.0422638629    0.08278198352
        FIZZ    30  0.07894736842   0.03321198596   0.05397044569
        RUMBLE  31  0.0780141844    0.03389651291   0.05628097579
        EVELYNN 32  0.07751937984   0.02678004714   0.03917686682
        CASSIOPEIA  33  0.07692307692   0.05041616285   0.1262906544
        TWISTED-FATE    34  0.07446808511   0.03792996909   0.07134568192
        KARTHUS 35  0.07246376812   0.0411164589    0.08621220606
        JAX 36  0.0701754386    0.02652196482   0.04076629401
        SHACO   37  0.06944444444   0.01803462731   0.0237397103
        AKALI   38  0.06784660767   0.02221503378   0.03189974224
        GANGPLANK   39  0.06443298969   0.02041233594   0.02895290043
        GALIO   40  0.0625  0.05138094269   0.2207926837
        DRAVEN  41  0.06162464986   0.0154014113    0.020093429
        ELISE   42  0.06    0.03938540364   0.1021734337
        TEEMO   43  0.05967450271   0.01687076741   0.02294629924
        SHEN    44  0.0593220339    0.03029263859   0.05808131626
        KINDRED 45  0.05882352941   0.03861725655   0.10042521
        VEIGAR  46  0.05479452055   0.02677117999   0.04959930475
        VEL-KOZ 47  0.05421686747   0.01965055354   0.02984893564
        AATROX  48  0.05263157895   0.03457161085   0.09106619766
        UDYR    49  0.05154639175   0.02933066833   0.06349869782
        RENEKTON    50  0.05138339921   0.02111228283   0.03453227035
        FIDDLESTICKS    51  0.05058365759   0.02078745972   0.03402520877
        SKARNER 52  0.05    0.03617962285   0.1150417082
        TARIC   53  0.05    0.02444971  0.04555204298
        BLITZCRANK  54  0.04838709677   0.01884791975   0.02990391825
        NOCTURNE    55  0.04807692308   0.02736918613   0.05956655138
        XERATH  56  0.048   0.02581829682   0.05277237376
        AHRI    57  0.04761904762   0.02329534513   0.04352172416
        RYZE    58  0.046875    0.02521745111   0.05162375989
        SION    59  0.046875    0.02202104919   0.0397979158
        KAYLE   60  0.0462962963    0.02095782855   0.03681422832
        SEJUANI 61  0.04545454545   0.03289969909   0.1058981698
        ANNIE   62  0.04545454545   0.0181882452    0.02938740412
        MASTER-YI   63  0.04545454545   0.01728501618   0.02709939324
        SORAKA  64  0.04387990762   0.01561125405   0.0236335255
        GNAR    65  0.04347826087   0.03147306728   0.1018469683
        HEIMERDINGER    66  0.04347826087   0.01903019573   0.0326866588
        LULU    67  0.04329004329   0.01960870772   0.03455066835
        PANTHEON    68  0.04237288136   0.01919678035   0.03385662534
        VLADIMIR    69  0.04210526316   0.02561175718   0.06120503817
        LISSANDRA   70  0.04166666667   0.03427340131   0.1607555958
        NUNU    71  0.03846153846   0.03163972948   0.1504702315
        SYNDRA  72  0.03846153846   0.03163972948   0.1504702315
        LEE-SIN 73  0.03773584906   0.02296524095   0.05529969278
        POPPY   74  0.03738317757   0.02275151504   0.05481869533
        SWAIN   75  0.03731343284   0.01692164376   0.02999879395
        WUKONG  76  0.0367816092    0.01401665416   0.02212664086
        KENNEN  77  0.03636363636   0.02213355578   0.05342449783
        MALZAHAR    78  0.03636363636   0.02213355578   0.05342449783
        DIANA   79  0.03535353535   0.01812488744   0.03581188416
        ZAC 80  0.03465346535   0.01776801123   0.0351374375
        CHO-GATH    81  0.03355704698   0.01914015326   0.04258779118
        TWITCH  82  0.03355704698   0.01914015326   0.04258779118
        MAOKAI  83  0.03333333333   0.02742489534   0.1333741806
        ZILEAN  84  0.03300330033   0.01497977204   0.02667319641
        HECARIM 85  0.0303030303    0.02493375821   0.1228875864
        TAHM-KENCH  86  0.0303030303    0.01994457841   0.05503520086
        CORKI   87  0.02941176471   0.02420099278   0.1197472575
        SHYVANA 88  0.02884615385   0.01898814955   0.05255561546
        MISS-FORTUNE    89  0.02857142857   0.01346866316   0.02482878681
        AMUMU   90  0.02830188679   0.01863077815   0.05162511675
        YORICK  91  0.02777777778   0.02012691631   0.06796580391
        JHIN    92  0.02777777778   0.01585583158   0.03559117863
        BRAND   93  0.02713178295   0.01392843003   0.02780376949
        NASUS   94  0.02688172043   0.01534615471   0.03449402517
        BARD    95  0.02659574468   0.01518346633   0.03414316837
        SONA    96  0.02616516762   0.0075710332    0.01053846419
        EKKO    97  0.02608695652   0.01407759625   0.02964868666
        GRAVES  98  0.02469135802   0.01789391311   0.06093755395
        VIKTOR  99  0.0243902439    0.02007182363   0.1015632262
        QUINN   100 0.02395209581   0.01459922489   0.03600836211
        THRESH  101 0.02151639344   0.007401003996  0.0111529219
        NAMI    102 0.02080624187   0.007959442523  0.01272334431
        ALISTAR 103 0.01973684211   0.01300231219   0.03667993033
        LEONA   104 0.01946472019   0.007448633761  0.01191928365
        XIN-ZHAO    105 0.01915708812   0.01094737104   0.0248968875
        ZYRA    106 0.01893095768   0.00707839643   0.01117684306
        KARMA   107 0.01826484018   0.01113976474   0.0277491751
        VAYNE   108 0.01739130435   0.0126090522    0.04381007213
        GAREN   109 0.015   0.009885854816  0.02816648056
        DR-MUNDO    110 0.01470588235   0.01210526575   0.06400572126
        VOLIBEAR    111 0.01449275362   0.009551973694  0.02724416193
        MALPHITE    112 0.01307189542   0.00947983485   0.03333298359
        EZREAL  113 0.0125  0.009065400844  0.03192626158
        VARUS   114 0.01149425287   0.009462397449  0.05077923199
        VI  115 0.01123595506   0.009249822963  0.04969798316
        ILLAOI  116 0.01052631579   0.008665787426  0.04671377745
        MORGANA 117 0.009538950715  0.00516009818   0.01111468513
        JINX    118 0.008645533141  0.005701054612  0.01646139386
        BRAUM   119 0.008547008547  0.006200021825  0.02207584684
        CAITLYN 120 0.006756756757  0.005563056588  0.03052121355
        NAUTILUS    121 0.005730659026  0.004157729224  0.01492054801
        LUX 122 0.002364066194  0.001946639235  0.01090414574
        CAMILLE 123 0   0   0.6576280471
        AZIR    124 0   0   0.1245590371
        SIVIR   125 0   0   0.1135170914
        LEBLANC 126 0   0   0.1015179062
        RENGAR  127 0   0   0.08380161251
        ZIGGS   128 0   0   0.08201257002
        TRUNDLE 129 0   0   0.07707617733
        WARWICK 130 0   0   0.06314100878
        LUCIAN  131 0   0   0.06017393048
        TRISTANA    132 0   0   0.05273909414
        KATARINA    133 0   0   0.03259969315
        ASHE    134 0   0   0.03028659367
    \end{filecontents}
\documentclass[border=5pt]{standalone}
\usepackage{pgfplots}
    % use this `compat' level or higher so you don't need to prefix every
    % TikZ coordinate with `axis cs:'
    \pgfplotsset{compat=1.11}
    % declare the layer background on which later on the rectangles will be placed
    % and set the order of the layers
    \pgfdeclarelayer{background}
    \pgfsetlayers{background,main}
\begin{document}
\begin{tikzpicture}
        \sffamily
    \begin{axis}[
        height=480,
        width=820,
        % I wouldn't use these explicitly here, because if the number of data
        % points changes you have to adjust them ...
%        xmin=-2,
%        xmax=137,
        ymin=-0.02,
        ymax=0.6,
        % ... Insted use `enlarge x limits'.
        enlarge x limits={abs=1},
        xtick=data,% crucial line for the xticklabels directive
        xticklabels from table={ntrick.dat}{CHAMP},
        xticklabel style={rotate=90,font=\tiny},
        % to avoid the nasty "5 \cdot 10^-2".
        yticklabel style={
            /pgf/number format/fixed,
        },
%        % ---------------------------------------------------------------------
%        % one possibility would be to add some "guide lines" only to easier see
%        % to which xtick which data point belongs
%        extra x ticks={5,10,...,150},
%        extra x ticks={5.5,10.5,...,150.5},
%        extra x tick labels={},
%        extra x tick style={
%            grid=major,
%            major tick length=0pt,
%        },
%        % ---------------------------------------------------------------------
        % I realized your zero line with the help of the `extra y ticks' feature
        extra y ticks={0},
        extra y tick labels={},
        extra y tick style={
            grid=major,
            major tick length=0pt,
        },
        only marks,
    ]

        % ---------------------------------------------------------------------
        % my prefered solution is to place filled rectangles in the background
        % each 5 entries to guide the reader to which xtick which data point
        % belongs.
        %
        % We place the rectangles on the previously defined background layer,
        % so they are also placed behind the axis and thus the `xtick's.
        % (Using the `axis on top' feature would also be an option, but that
        %  would cause the created `extra y ticks' line to be on top of the
        %  data points as well which most probably is not desired.)
        \begin{pgfonlayer}{background}
            % I suggest to group data points in steps of 5, so we have to draw
            % colored rectangles each 10 entries with a width of 5.
            % I think it is a matter of taste if the rectangles should be placed
            % *on* the data points or *between* the data points. Here I have
            % chosen the later one.
            \pgfplotsinvokeforeach {5.5,15.5,...,135.5} {
                \fill [black!5] (#1,\pgfkeysvalueof{/pgfplots/ymin})
                    rectangle (#1+5,\pgfkeysvalueof{/pgfplots/ymax});
            }
        \end{pgfonlayer}
        % ---------------------------------------------------------------------

        % you can draw both error bars in one call
        \addplot [
            % because I don't like it that you see the error bar line "through"
            % the data point I changed the mark to the corresponding one that
            % can be filled and filled it white
            mark=*,
            fill=white,
            error bars/.cd,
                y dir = both,
                y explicit,
        ] table [
            x=X,
            y=Y,
            y error minus=YL,
            y error plus =YH,
        ] {ntrick.dat};
    \end{axis}
\end{tikzpicture}
\end{document}

上記コードの結果を示す画像

答え2

cycle list nameのメカニズムの問題点pgfplotsは、少なくとも私がマニュアルを理解している限りでは、サイクル リストの要素が現在のプロット番号に基づいて選択され、その番号が と\addplot仲間によって増分されることです。したがって、軸に 1 つしかない場合\addplot、サイクル リストの次の要素は選択されません。

私はなんとか思いついた部分的解決策ですが、いくつか欠点もあります。

  • 遅い。とても遅い(私のマシンではコンパイルに約30秒かかるが、元のコードでは約2秒)。これは、各プロットサイクルでテーブル全体が処理されるためで、1つを除いて破棄する要素。正直言って、かなり洗練されていない。もし誰かがもっとすっきりしたバージョンを思いついたら、私はとても興味がある。
  • 目盛りラベルのスタイルは循環しません。pgfplotsマニュアルを徹底的に調べ、目盛りラベルと記号座標の両方をいじってみましたが、残念ながら、思った通りにはいきませんでした。目盛りラベルは 全体に設定されておりaxis、循環はないので、これは理にかなっています。実行可能な解決策が見つかったら更新を投稿します。これは確かにあれば非常に便利なものなので、その点については同意します。

実際の解決策の前の最後のこと:パーカッションx filter/.codeのスニペットのクレジットこの答え、そしてエラーバーコードスニペットを提供してくれたStefan Pinnowに感謝します。彼の答えはここに

とにかく、コード:

\documentclass[tikz]{standalone}
\usepackage{pgfplots,filecontents,pgfplotstable}
\pgfplotsset{compat=newest}

\begin{filecontents}{ntrick.dat}
CHAMP   X   Y   YL  YH
YASUO   1   0.4107142857    0.1190484959    0.1305120931
AURELION-SOL    2   0.2222222222    0.1161512673    0.1853507324
DARIUS  3   0.1941747573    0.06481265042   0.08680517491
KOG-MAW 4   0.1785714286    0.09978757028   0.1773464869
TALIYAH 5   0.1666666667    0.07971256627   0.1291143337
GRAGAS  6   0.156626506 0.06274727049   0.09312680322
ZED 7   0.1492537313    0.06611188926   0.1041524436
NIDALEE 8   0.1304347826    0.06026929692   0.09925036651
URGOT   9   0.1282051282    0.07217777872   0.1388553622
OLAF    10  0.12    0.05556701031   0.0925984252
MORDEKAISER 11  0.1194029851    0.04455530856   0.06576953551
IVERN   12  0.1136363636    0.06410928774   0.1261579878
ORIANNA 13  0.1111111111    0.05918159294   0.1108383782
ANIVIA  14  0.1111111111    0.03129912354   0.04153724967
FIORA   15  0.1076923077    0.04245156691   0.06497205726
KHA-ZIX 16  0.1058823529    0.04917058778   0.08325467346
SINGED  17  0.1027777778    0.02728978089   0.03567787553
TRYNDAMERE  18  0.09979633401   0.02348415136   0.02969794746
REK-SAI 19  0.09523809524   0.06871988644   0.1939077434
JARVAN-IV   20  0.09090909091   0.04412322921   0.07834657977
TALON   21  0.08450704225   0.03550617218   0.05739509477
IRELIA  22  0.08438818565   0.02909757023   0.0423561962
RAMMUS  23  0.0843373494    0.04288454022   0.07965976404
JAYCE   24  0.08421052632   0.03171308747   0.04819352141
JANNA   25  0.08316008316   0.02149690193   0.02810249116
RIVEN   26  0.08227114716   0.01653443314   0.02023694848
KALISTA 27  0.08108108108   0.05312101468   0.1319288439
KASSADIN    28  0.08108108108   0.05312101468   0.1319288439
KLED    29  0.07894736842   0.0422638629    0.08278198352
FIZZ    30  0.07894736842   0.03321198596   0.05397044569
RUMBLE  31  0.0780141844    0.03389651291   0.05628097579
EVELYNN 32  0.07751937984   0.02678004714   0.03917686682
CASSIOPEIA  33  0.07692307692   0.05041616285   0.1262906544
TWISTED-FATE    34  0.07446808511   0.03792996909   0.07134568192
KARTHUS 35  0.07246376812   0.0411164589    0.08621220606
JAX 36  0.0701754386    0.02652196482   0.04076629401
SHACO   37  0.06944444444   0.01803462731   0.0237397103
AKALI   38  0.06784660767   0.02221503378   0.03189974224
GANGPLANK   39  0.06443298969   0.02041233594   0.02895290043
GALIO   40  0.0625  0.05138094269   0.2207926837
DRAVEN  41  0.06162464986   0.0154014113    0.020093429
ELISE   42  0.06    0.03938540364   0.1021734337
TEEMO   43  0.05967450271   0.01687076741   0.02294629924
SHEN    44  0.0593220339    0.03029263859   0.05808131626
KINDRED 45  0.05882352941   0.03861725655   0.10042521
VEIGAR  46  0.05479452055   0.02677117999   0.04959930475
VEL-KOZ 47  0.05421686747   0.01965055354   0.02984893564
AATROX  48  0.05263157895   0.03457161085   0.09106619766
UDYR    49  0.05154639175   0.02933066833   0.06349869782
RENEKTON    50  0.05138339921   0.02111228283   0.03453227035
FIDDLESTICKS    51  0.05058365759   0.02078745972   0.03402520877
SKARNER 52  0.05    0.03617962285   0.1150417082
TARIC   53  0.05    0.02444971  0.04555204298
BLITZCRANK  54  0.04838709677   0.01884791975   0.02990391825
NOCTURNE    55  0.04807692308   0.02736918613   0.05956655138
XERATH  56  0.048   0.02581829682   0.05277237376
AHRI    57  0.04761904762   0.02329534513   0.04352172416
RYZE    58  0.046875    0.02521745111   0.05162375989
SION    59  0.046875    0.02202104919   0.0397979158
KAYLE   60  0.0462962963    0.02095782855   0.03681422832
SEJUANI 61  0.04545454545   0.03289969909   0.1058981698
ANNIE   62  0.04545454545   0.0181882452    0.02938740412
MASTER-YI   63  0.04545454545   0.01728501618   0.02709939324
SORAKA  64  0.04387990762   0.01561125405   0.0236335255
GNAR    65  0.04347826087   0.03147306728   0.1018469683
HEIMERDINGER    66  0.04347826087   0.01903019573   0.0326866588
LULU    67  0.04329004329   0.01960870772   0.03455066835
PANTHEON    68  0.04237288136   0.01919678035   0.03385662534
VLADIMIR    69  0.04210526316   0.02561175718   0.06120503817
LISSANDRA   70  0.04166666667   0.03427340131   0.1607555958
NUNU    71  0.03846153846   0.03163972948   0.1504702315
SYNDRA  72  0.03846153846   0.03163972948   0.1504702315
LEE-SIN 73  0.03773584906   0.02296524095   0.05529969278
POPPY   74  0.03738317757   0.02275151504   0.05481869533
SWAIN   75  0.03731343284   0.01692164376   0.02999879395
WUKONG  76  0.0367816092    0.01401665416   0.02212664086
KENNEN  77  0.03636363636   0.02213355578   0.05342449783
MALZAHAR    78  0.03636363636   0.02213355578   0.05342449783
DIANA   79  0.03535353535   0.01812488744   0.03581188416
ZAC 80  0.03465346535   0.01776801123   0.0351374375
CHO-GATH    81  0.03355704698   0.01914015326   0.04258779118
TWITCH  82  0.03355704698   0.01914015326   0.04258779118
MAOKAI  83  0.03333333333   0.02742489534   0.1333741806
ZILEAN  84  0.03300330033   0.01497977204   0.02667319641
HECARIM 85  0.0303030303    0.02493375821   0.1228875864
TAHM-KENCH  86  0.0303030303    0.01994457841   0.05503520086
CORKI   87  0.02941176471   0.02420099278   0.1197472575
SHYVANA 88  0.02884615385   0.01898814955   0.05255561546
MISS-FORTUNE    89  0.02857142857   0.01346866316   0.02482878681
AMUMU   90  0.02830188679   0.01863077815   0.05162511675
YORICK  91  0.02777777778   0.02012691631   0.06796580391
JHIN    92  0.02777777778   0.01585583158   0.03559117863
BRAND   93  0.02713178295   0.01392843003   0.02780376949
NASUS   94  0.02688172043   0.01534615471   0.03449402517
BARD    95  0.02659574468   0.01518346633   0.03414316837
SONA    96  0.02616516762   0.0075710332    0.01053846419
EKKO    97  0.02608695652   0.01407759625   0.02964868666
GRAVES  98  0.02469135802   0.01789391311   0.06093755395
VIKTOR  99  0.0243902439    0.02007182363   0.1015632262
QUINN   100 0.02395209581   0.01459922489   0.03600836211
THRESH  101 0.02151639344   0.007401003996  0.0111529219
NAMI    102 0.02080624187   0.007959442523  0.01272334431
ALISTAR 103 0.01973684211   0.01300231219   0.03667993033
LEONA   104 0.01946472019   0.007448633761  0.01191928365
XIN-ZHAO    105 0.01915708812   0.01094737104   0.0248968875
ZYRA    106 0.01893095768   0.00707839643   0.01117684306
KARMA   107 0.01826484018   0.01113976474   0.0277491751
VAYNE   108 0.01739130435   0.0126090522    0.04381007213
GAREN   109 0.015   0.009885854816  0.02816648056
DR-MUNDO    110 0.01470588235   0.01210526575   0.06400572126
VOLIBEAR    111 0.01449275362   0.009551973694  0.02724416193
MALPHITE    112 0.01307189542   0.00947983485   0.03333298359
EZREAL  113 0.0125  0.009065400844  0.03192626158
VARUS   114 0.01149425287   0.009462397449  0.05077923199
VI  115 0.01123595506   0.009249822963  0.04969798316
ILLAOI  116 0.01052631579   0.008665787426  0.04671377745
MORGANA 117 0.009538950715  0.00516009818   0.01111468513
JINX    118 0.008645533141  0.005701054612  0.01646139386
BRAUM   119 0.008547008547  0.006200021825  0.02207584684
CAITLYN 120 0.006756756757  0.005563056588  0.03052121355
NAUTILUS    121 0.005730659026  0.004157729224  0.01492054801
LUX 122 0.002364066194  0.001946639235  0.01090414574
CAMILLE 123 0   0   0.6576280471
AZIR    124 0   0   0.1245590371
SIVIR   125 0   0   0.1135170914
LEBLANC 126 0   0   0.1015179062
RENGAR  127 0   0   0.08380161251
ZIGGS   128 0   0   0.08201257002
TRUNDLE 129 0   0   0.07707617733
WARWICK 130 0   0   0.06314100878
LUCIAN  131 0   0   0.06017393048
TRISTANA    132 0   0   0.05273909414
KATARINA    133 0   0   0.03259969315
ASHE    134 0   0   0.03028659367
\end{filecontents}

\begin{document}
\pgfplotstableread{ntrick.dat}{\champs}
\pgfplotstablegetrowsof{\champs}
\pgfmathsetmacro\totRows{\pgfmathresult}
\begin{tikzpicture}
\sffamily
\begin{axis}[
    xtick=data,% crucial line for the xticklabels directive
    xticklabels from table={\champs}{CHAMP},
    xticklabel style={rotate=90,font=\tiny},
    xmin=-2,
    xmax=137,
    ymin=-0.02,
    ymax=0.6,
    height=480,
    width=820,
    unbounded coords=discard,
    filter discard warning=false,
    cycle list name=color,
]
\draw
    (axis cs:\pgfkeysvalueof{/pgfplots/xmin},0) --
    (axis cs:\pgfkeysvalueof{/pgfplots/xmax},0);

%Need this so that all xaxis tick labels are printed.
\addplot [
    white,
    only marks, mark=o,
]
table [
    x=X,
    y=Y,
] {\champs};

\foreach \row in {1,...,\totRows} {%
    \addplot+ [
        x filter/.code={\pgfplotstablegetelem{\coordindex}{X}\of{\champs}
                        \ifnum\pgfplotsretval=\row,
                        \else
                        \def\pgfmathresult{}
                        \fi
                       },
        only marks, mark=o,
        error bars/.cd, y dir = both, y explicit
    ]
    table [
        x=X,
        y=Y,
        y error plus expr=\thisrow{YH},
        y error minus expr=\thisrow{YL},
    ] {\champs};
}
\end{axis}

\end{tikzpicture}
\end{document}

結果:

コード結果

関連情報