#python #numpy #matplotlib #colors
#python #тупой #matplotlib #Цвет
Вопрос:
У меня возникла проблема, которая (я думаю) должна иметь довольно простое решение. Я все еще относительный новичок в Python, поэтому прошу прощения, если я делаю что-то явно неправильно. Я просто пытаюсь создать простой график с несколькими строками, где каждая строка окрашена в свой собственный определенный пользователем цвет. Когда я запускаю следующий код в качестве теста для одного из цветов, в итоге он выдает мне пустой график. Чего мне здесь не хватает? Большое вам спасибо!
import numpy as np
import matplotlib.pyplot as plt
from colour import Color
dbz53 = Color('#DD3044')
*a bunch of arrays of data, two of which are called x and mpt1*
fig, ax = plt.subplots()
ax.plot(x, mpt1, color='dbz53', label='53 dBz')
ax.set_yscale('log')
ax.set_xlabel('Diameter (mm)')
ax.set_ylabel('$N(D) (m^-4)
Комментарии:
1. Я не знаком с модулем, но принимает среди прочих шестнадцатеричные цвета.
colour
ax.plot
Я бы использовал это. Вы уверены, что ваши данные имеют смысл?2. Пожалуйста, не добавляйте ответы в вопрос. Вопросы должны быть вопросами. Если какая-то часть ответа отсутствует, либо добавьте свой собственный ответ, либо отредактируйте существующее сообщение, если вы считаете это более подходящим.
3. Если какой-либо ответ полезен для вас, пожалуйста, рассмотрите возможность голосования, нажав на стрелку вверх, и примите лучший ответ, нажав на галочку (флажок). Это предпочтительный способ сказать спасибо в SO, а не в комментариях.
Ответ №1:
Заявление
ax.plot(x, mpt1, color='dbz53', label='53 dBz')
неправильно с 'dbz53', где python обрабатывал его как строку с неизвестным значением rgb.
Вы можете просто поместить
color='#DD3044'
и это будет работать.
Или вы можете попробовать
color=dbz53.get_hex()
без кавычек, если вы хотите использовать импортированный вами цветовой модуль.
Ответ №2:
В plot
команде вы можете ввести шестнадцатеричные цвета. Гораздо более простым способом украсить ваш сюжет было бы просто использовать стили matplotlib. Например, перед любой функцией построения графика просто напишите plt.style.use('ggplot')
Комментарии:
1. Если вы потратите время, чтобы добавить ответ на такой простой вопрос, как этот, пожалуйста, пройдите весь путь и добавьте реальный пример с простыми шестнадцатеричными цветами.
2. Мне никогда не приходило в голову вводить шестнадцатеричный цвет вместо именованного, заранее определенного цвета matplotlib в аргументе color . Сумасшедший. Спасибо вам обоим!
)
ax.set_title('N(D) vs. D')
#ax.legend(loc='upper right')
plt.show()
Комментарии:
1. Я не знаком с модулем, но принимает среди прочих шестнадцатеричные цвета.
colour
ax.plot
Я бы использовал это. Вы уверены, что ваши данные имеют смысл?2. Пожалуйста, не добавляйте ответы в вопрос. Вопросы должны быть вопросами. Если какая-то часть ответа отсутствует, либо добавьте свой собственный ответ, либо отредактируйте существующее сообщение, если вы считаете это более подходящим.
3. Если какой-либо ответ полезен для вас, пожалуйста, рассмотрите возможность голосования, нажав на стрелку вверх, и примите лучший ответ, нажав на галочку (флажок). Это предпочтительный способ сказать спасибо в SO, а не в комментариях.
Ответ №1:
Заявление
неправильно с ‘dbz53’, где python обрабатывал его как строку с неизвестным значением rgb.
Вы можете просто поместить
и это будет работать.
Или вы можете попробовать
без кавычек, если вы хотите использовать импортированный вами цветовой модуль.
Ответ №2:
В plot
команде вы можете ввести шестнадцатеричные цвета. Гораздо более простым способом украсить ваш сюжет было бы просто использовать стили matplotlib. Например, перед любой функцией построения графика просто напишите plt.style.use('ggplot')
Комментарии:
1. Если вы потратите время, чтобы добавить ответ на такой простой вопрос, как этот, пожалуйста, пройдите весь путь и добавьте реальный пример с простыми шестнадцатеричными цветами.
2. Мне никогда не приходило в голову вводить шестнадцатеричный цвет вместо именованного, заранее определенного цвета matplotlib в аргументе color . Сумасшедший. Спасибо вам обоим!