Невозможно использовать Scientifi c Notation в коробчатых диаграммах Seaborn - PullRequest
2 голосов
/ 10 июля 2020

Я пытаюсь создать коробчатую диаграмму с помощью Seaborn, и моя ось x включает числовые значения, а не категории. Когда я использую следующий код, я теряю информацию об экспонентах. Все значения по оси x равны * E13. Невозможно добавить его даже с метками тикера и нотацией c.

fig=plt.figure(dpi=600) 
ax=sns.boxplot(y='Y',x='X', data=df_new,palette="colorblind",width=.5,whis=1.5) 
ax.xaxis.set_major_locator(ticker.MultipleLocator(3)) 
ax.xaxis.set_major_formatter(ticker.ScalarFormatter()) plt.tight_layout()

См. Выходной рисунок здесь:

Sns boxplot

Также значения оси x кажутся неправильными, как значения от go до 5E13, и они не отображаются. Ниже приводится один набор данных.

    X   Y
0   0.0 0.0
1   0.0 0.0
2   0.0 0.0
3   0.0 0.0
4   0.0 0.0
5   0.0 0.0
6   0.0 0.0
7   1281250000000.0 2.17e-05
8   2800000000000.0 0.003213235
9   4450000000000.0 0.171645861
10  6118750000000.001   0.898827775
11  7750000000000.0 2.066164133
12  9375000000000.0 3.3495570389999996
13  11000000000000.002  4.569949722
14  12562500000000.0    5.657290564
15  14125000000000.0    6.602228919
16  15750000000000.0    7.416413887
17  17375000000000.002  8.147655987
18  19062500000000.0    8.873699614
19  20875000000000.004  9.567954739
20  22687500000000.0    10.18507194
21  24625000000000.004  10.69537502
22  26562500000000.0    11.10099437
23  28562500000000.004  11.41167819
24  30625000000000.0    11.63932739
25  32687500000000.0    11.79669911
26  34812500000000.004  11.89577136
27  36937500000000.0    11.9426608
28  39062500000000.01   11.94661993
29  41250000000000.01   11.91209701
30  43437500000000.01   11.84470038
31  45625000000000.01   11.7506115
32  47875000000000.0    11.63069121
33  50125000000000.0    11.49003632

Любая помощь приветствуется. Спасибо!

1 Ответ

0 голосов
/ 10 июля 2020

Не уверен, что вы пытаетесь сделать с этими двумя строками:

ax.xaxis.set_major_locator(ticker.MultipleLocator(10**12)) 
ax.xaxis.set_major_formatter(ticker.ScalarFormatter())

Я бы просто удалил их и вместо этого использовал поворот метки оси:

plt.xticks(rotation=90)
...