Ось сюжета с запонками - PullRequest
0 голосов
/ 25 июня 2018

Я пытаюсь избежать мертвых пробелов по оси Y в столбчатой ​​диаграмме с накоплением, созданной с помощью запонок [plotly]

данные выглядят так:

    delay_percentage
crane_delay_type_gkey   1.0      2.0      3.0        4.0         5.0       6.0  7.0 8.0 9.0 10.0    ... 18.0     19.0   20.0    21.0    22.0    23.0    24.0    25.0    26.0    27.0
  crane_gkey                                                                                    
         288     76.425626  1.846134    0.000000    0.701747    0.000000     0.000000   4.933820    0.939261    0.000000    0.000000    ... 1.338717     0.291495   0.421048    0.269903    0.151145    0.636970    6.395612    1.589187    0.000000    0.172738
         333    46.153846   0.000000    0.000000    0.000000    0.000000    0.000000    7.692308    0.000000    0.000000    0.000000    ... 0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000
         338    81.818182   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    ... 0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000
         345    75.000000   0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    12.500000   0.000000    0.000000    ... 0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000

код, который я использовал для запонок:

df.iplot(kind ='barh', barmode = 'stack')

график выглядит следующим образом:

enter image description here

Как удалить пробелы между столбцами?особенно большой разрыв между значениями оси 288 и 333.

Я попытался превратить значения crane_gkey [значения оси y] в строку, ничего не получилось.Также, как бы я увеличил толщину стержней на гистограмме запонок.

1 Ответ

0 голосов
/ 26 июня 2018

Почему бы просто не обрезать нулевые значения в источнике. Я имею в виду, используя pandas сам.

Так вот мой подход к этому.

У нас есть образец данных.

df = pd.DataFrame({"A": ["foo", "foo", "foo", "foo", "foo",
                          "bar", "bar", "bar", "bar"],
                    "B": ["one", "one", "one", "two", "two",
                          "one", "one", "two", "two"],
                    "C": ["small", "large", "large", "small",
                          "small", "large", "small", "small",
                          "large"],
                    "D": [1, 2, 2, 0, 0, 4, 5, 6, 7]})

Который на развороте дает мне.

table = pd.pivot_table(df, values='D', index=['A', 'B'],
                     columns=['C'], aggfunc=np.sum)

Ссылка: здесь

Выход:

C       large   small
A   B       
bar one 4.0     5.0
    two 7.0     6.0
foo one 4.0     1.0
    two NaN     0.0

Так что, если мы удалим foo and two, мы сможем получить правильный график. Я делаю это с помощью.

table = table.fillna(0) # replace all NaN values to zero
table = table[(table.T != 0).any()] # remove all the rows which are having sum as zero.

Выход:

C       large   small
A   B       
bar one 4.0     5.0
    two 7.0     6.0
foo one 4.0     1.0

Наконец, мы можем построить запонки с помощью

plot = table.iplot(kind ='barh', barmode = 'stack', asFigure=True)
py_offline.iplot(plot)

Пожалуйста, попробуйте это решение и дайте мне знать, если это решит вашу проблему!

...