MatPlotLib рандомизирующий цвет для черчения - PullRequest
0 голосов
/ 23 марта 2020

Вот мой код:

import numpy as np
import matplotlib.dates as mdates


fig, ax = plt.subplots(figsize = (10,10))

dateList = []
countries = []
casesList = []

colors = []

for e in sorted_date:

  countries.append(e[0])
  dateList.append(e[1][0])
  casesList.append(e[1][1])

# plt.gca().xaxis.set_major_formatter(mdates.DateFormatter('%m/%d/%Y'))

for country, date, case in zip(countries, dateList, casesList):
  ax.scatter(date, case, c = np.random.rand(3,), edgecolors='none', label=country )

plt.legend(loc=1)
plt.show()

Мой график рассеяния работает, но я продолжал получать сообщение об ошибке для цветного RGB или RGBA, например:

'c' Аргумент выглядит как единственная цифра c последовательность RGB или RGBA, чего следует избегать, поскольку отображение значения будет иметь приоритет в случае, если его длина совпадает с 'x' & 'y'. Пожалуйста, используйте двумерный массив с одной строкой, если вы действительно хотите указать одинаковое значение RGB или RGBA для всех точек.

Я думаю, что что-то не так с моим рандомизацией цвета, но не уверен что это исправить.

Ответы [ 2 ]

0 голосов
/ 23 марта 2020

Вы должны сделать именно то, что предлагает ошибка: используйте двумерный массив с одной строкой для массива RGB:

c = np.random.rand(1,3)
0 голосов
/ 23 марта 2020

Вы можете превратить ваш RGB-кортеж в шестнадцатеричную строку , как показано здесь :

...
for country, date, case in zip(countries, dateList, casesList):
    r, g, b = (int(255*x) for x in np.random.rand(3,))
    hexa = "#%02x%02x%02x" %(r, g, b)
    ax.scatter(date, case, c=hexa, edgecolors='none', label=country)
...
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...