Неповторяющиеся цвета и конкретная ширина линии в Python - PullRequest
0 голосов
/ 14 января 2019

это небольшая часть кода, которая отображает серию орбит. Я хотел бы знать, как не получить повторяющиеся цвета, потому что иногда с random.choice () я получаю несколько орбит одного цвета. Я хотел бы знать, возможно ли выбрать конкретный linewitdh для каждого тела, содержащегося в «телах». Заранее спасибо.

#Output of the code
def plot_output(bodies, outfile = None):
    fig = plot.figure()
    colours = ['r', 'b','g','y','m','c', 'black','aqua', 'salmon', 'orangered', 'lime', 'mediumseagreen', 'yellow', 'gold', 'darkcyan', 'lime', 'magenta', 'grey', 'mediumslateblue', 'dimgray', 'deeppink', 'firebrick', 'pink', 'deepskyblue', 'olive', 'greenyellow', 'thistle', 'springgreen']
    ax = fig.add_subplot(1,1,1, projection='3d')
    max_range = 0
    for current_body in bodies:
        max_dim = max(max(current_body["x"]),max(current_body["y"]),max(current_body["z"]))
        if max_dim > max_range:
            max_range = max_dim
        ax.plot(current_body["x"], current_body["y"], current_body["z"], c = random.choice(colours), label = current_body["name"])       
    ax.set_xlim([-max_range,max_range])    
    ax.set_ylim([-max_range,max_range])
    ax.set_zlim([-max_range,max_range])
    ax.legend()       

    if outfile:
        plot.savefig(outfile)
    else:
        plot.show()

1 Ответ

0 голосов
/ 14 января 2019

Если вы хотите, чтобы выбранные цвета были уникальными друг для друга, вы можете использовать random.sample(population, k). Это образцы k "уникальных" элементов от населения.

Ниже приведен скрипт, показывающий, как вы можете его использовать:

bodies = ['a', 'b', 'c']
colours = ['r', 'b','g','y','m','c', 'black','aqua', 'salmon', 'orangered', 'lime', 'mediumseagreen', 'yellow', 'gold', 'darkcyan', 'lime', 'magenta', 'grey', 'mediumslateblue', 'dimgray', 'deeppink', 'firebrick', 'pink', 'deepskyblue', 'olive', 'greenyellow', 'thistle', 'springgreen']
sampled_colours = random.sample(colours, len(bodies))

for current_body, colour in zip(bodies, sampled_colours):
    print(current_body, colour)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...