TypeError: barh () получил несколько значений для аргумента 'width' - PullRequest
0 голосов
/ 09 февраля 2020

Я пытаюсь сделать график, который раньше был вертикальным ... Я пытаюсь сделать его горизонтальным. Что происходит, когда я получаю ошибку:

TypeError: barh () получил несколько значений для аргумента 'width'.

Может ли кто-нибудь помочь?

barWidth = 1
plt.barh(r, bars1, color='#7f6d5f', edgecolor='white', width=barWidth, label="Lasso")
plt.barh(r, bars2, bottom=bars1, color='#557f2d', edgecolor='white', width=barWidth, label="Random Forest")
plt.barh(r, bars3, bottom=bars, color='#2d7f5e', edgecolor='white', width=barWidth, label="Decision Tree")

1 Ответ

0 голосов
/ 09 февраля 2020

Есть несколько неправильных вещей:

  • вы не можете задать ширину горизонтальных полос, вы уже задали ширину вторым параметром barh; вам нужно установить высоту вместо
  • аналогично, дна нет, вам нужно установить левую
  • , наконец, чтобы все было правильно расположено, для третьих баров вам нужна сумма предыдущие два: left=bars1+bars2 (или используйте отдельную переменную для накопленной ширины)

Пример кода, показывающий, как это может работать:

from matplotlib import pyplot as plt
import numpy as np

N = 5
r = range(N)
bars1 = np.random.binomial(20, .7, N)
bars2 = np.random.binomial(20, .5, N)
bars3 = np.random.binomial(20, .4, N)

colors = ['#7f6d5f', '#557f2d', '#2d7f5e']
labels = ["Lasso", "Random Forest", "Decision Tree"]

barWidth = 1
lefts = 0
for bars, col, label in zip([bars1, bars2, bars3], colors, labels):
    plt.barh(r, bars, left=lefts, color=col, edgecolor='white', height=barWidth, label=label)
    lefts += bars
plt.legend()
plt.ylim(-0.5, len(bars) - 0.5)
plt.show()

sample

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...