установка разных цветов для 25 строк в моей строке chrt - PullRequest
1 голос
/ 27 апреля 2020

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

plt.figure(figsize=(16,16))
for cluster_index in [0,1,2]:

    plt.subplot(3,1,cluster_index + 1)

    for index, row in data_consumption2.iterrows():
        if row.iloc[-1] == cluster_index:
            plt.plot(row.iloc[1:-1] ,marker='x', alpha=1)

        plt.legend(loc="best")

    plt.plot(kmeans.cluster_centers_[cluster_index], color='k' ,marker='o', alpha=1)

    plt.xticks(rotation='vertical')
    plt.ylabel('Electricity Consumption')
    plt.title(f'Cluster {cluster_index}', fontsize=20)

plt.tight_layout()
plt.show()

Буду признателен за любую помощь в этом вопросе.

Ответы [ 2 ]

2 голосов
/ 27 апреля 2020

Python Matplotlib имеет 8 встроенных цветов. Поэтому, если вы не укажете, они принимают во внимание, что эти встроенные цвета вращаются. Однако matplotlib позволяет кодеру указывать в формате «c», за которым следует число. Как, c0: первый цвет в цикле; с1: второй цвет в цикле; Итак, если вы напишите,

color='0.75'

, это даст вам промежуточный оттенок.

Кроме того, он в значительной степени следует шаблону HTML, так что вы можете фактически дать цвета как шестнадцатеричные или rgb формат.

Формат RGB записывается как,

color='rgb(255, 0, 0)'

Это код цвета для красного. В rgb первый цвет - для красного, второй - для зеленого, а третий - для синего, все в диапазоне от 0 до 255. Итак, rgb (0,0,0) - черный, а rgb (255,255,255) - белый.

Также вы можете использовать код Hexa, например,

color='#ff6347'

также красного цвета.

Значения цветов можно найти в школах w3. Надеюсь, что это работает.

1 голос
/ 27 апреля 2020

На мой взгляд, лучший способ сделать это - использовать HSV вместо RGB. Вам просто нужно изменить H, чтобы иметь значительные изменения.

import matplotlib.pyplot as plt
import matplotlib.colors as colors
import numpy as np
x = np.arange(10)

for i in range(1,26):
  hsv = ((1/25)*i,.8,.8)
  plt.plot(x*i, color = colors.hsv_to_rgb(hsv))

plt.show()

Это выводит

enter image description here

Вы также можете использовать итерацию для измените насыщенность и значение , чтобы получить больше ограничений между графиками.

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