Как убрать подписи к осям matplotlib
Перейти к содержимому

Как убрать подписи к осям matplotlib

  • автор:

Как убрать значения осей на графике?

никак не могу избавиться от значения осей на графике. Мне нужная только картинка графика.сохранять изображение умею, не могу убрать значения и сменить весь фон на черный.

from numpy import genfromtxt import mpl_finance window_size=60 DATA_FOLDER = 'C:\\DataSet' data_buy = genfromtxt(DATA_FOLDER+'/BASE.csv', encoding='utf-16', delimiter='\t' ,dtype=str) data_buy = np.flipud(data_buy) def generateFXTimeS(): for i in range(20): direction = 'ok' open = [] high = [] low = [] close = [] volume = [] open2 = [] high2 = [] low2 = [] close2 = [] volume2 = [] date = [] start=i*window_size for start in range(start,start+window_size,1): open.append(float(data_buy[start][1])) high.append(float(data_buy[start][2])) low.append(float(data_buy[start][3])) close.append(float(data_buy[start][4])) volume.append(float(data_buy[start][5])) open2.append(float(data_buy[start][6])) high2.append(float(data_buy[start][7])) low2.append(float(data_buy[start][8])) close2.append(float(data_buy[start][9])) volume2.append(float(data_buy[start][10])) date.append(data_buy[start][0]) sma = convolve_sma(close,9) smb = list(sma) diff = sma[-1] - sma[-2] for x in range(len(close)-len(smb)): smb.append(smb[-1]+diff) sma2 = convolve_sma(close, 21) smb2 = list(sma2) diff = sma2[-1] - sma2[-2] for x in range(len(close)-len(smb2)): smb2.append(smb2[-1]+diff) sma3 = convolve_sma(close, 31) smb3 = list(sma3) diff = sma3[-1] - sma3[-2] for x in range(len(close)-len(smb3)): smb3.append(smb3[-1]+diff) fig = plt.figure(figsize=(3, 3), dpi=50, facecolor='w', edgecolor='k') fig.set_facecolor("Black") plt.axis('off') fig.patch.set_visible(False) #dx = fig.add_subplot(111) dx=fig.add_subplot(111, label="1") dx2=fig.add_subplot(111, label="2", frame_on=False) dx3=fig.add_subplot(111, label="3", frame_on=False) dx4=fig.add_subplot(111, label="4", frame_on=False) dx5=fig.add_subplot(111, label="5", frame_on=False) mpl_finance.candlestick2_ochl(dx,open, close, high, low, width=1.5, colorup='r', colordown='g', alpha=0.5) mpl_finance.candlestick2_ochl(dx2,open2, close2, high2, low2, width=1.5, colorup='gray', colordown='gray', alpha=0.5) plt.autoscale() dx3.plot(smb, color="blue", linewidth=5, alpha=0.5) dx4.plot(smb2, color="red", linewidth=5, alpha=0.5) dx5.plot(smb3, color="orange", linewidth=5, alpha=0.5) plt.axis('off') #plt.savefig( os.path.join(train_output_dir,str(direction) +'_<>.jpg'.format(i+i)),bbox_inches='tight') plt.show() open.clear() close.clear() volume.clear() high.clear() low.clear() plt.cla() plt.clf() plt.close(fig) if __name__ == '__main__': generateFXTimeS() 

Как скрыть оси в Matplotlib (с примерами)

Как скрыть оси в Matplotlib (с примерами)

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

import matplotlib.pyplot as plt #get current axes ax = plt.gca () #hide x-axis ax.get_xaxis ().set_visible ( False ) #hide y-axis ax.get_yaxis ().set_visible ( False ) 

В следующих примерах показано, как использовать этот синтаксис на практике.

Пример 1: скрыть ось X

В следующем коде показано, как создать диаграмму рассеяния и скрыть ось X:

import matplotlib.pyplot as plt #define data x = [3, 4, 4, 6, 7, 8, 8, 12] y = [11, 12, 12, 14, 17, 15, 14, 19] #create scatterplot plt.scatter (x, y) #get current axes ax = plt.gca () #hide x-axis ax.get_xaxis ().set_visible ( False ) 

Скрыть ось X в Matplotlib

Пример 2: скрыть ось Y

В следующем коде показано, как создать диаграмму рассеяния и скрыть ось Y:

import matplotlib.pyplot as plt #define data x = [3, 4, 4, 6, 7, 8, 8, 12] y = [11, 12, 12, 14, 17, 15, 14, 19] #create scatterplot plt.scatter (x, y) #get current axes ax = plt.gca () #hide y-axis ax.get_yaxis ().set_visible ( False ) 

Пример 3: скрыть обе оси

В следующем коде показано, как создать диаграмму рассеяния и скрыть обе оси:

import matplotlib.pyplot as plt #define data x = [3, 4, 4, 6, 7, 8, 8, 12] y = [11, 12, 12, 14, 17, 15, 14, 19] #create scatterplot plt.scatter (x, y) #get current axes ax = plt.gca () #hide x-axis ax.get_xaxis ().set_visible ( False ) #hide y-axis ax.get_yaxis ().set_visible ( False ) 

Пример 4: полное удаление осей и границ

Следующий код показывает, как полностью удалить оси и границы графика:

import matplotlib.pyplot as plt #define data x = [3, 4, 4, 6, 7, 8, 8, 12] y = [11, 12, 12, 14, 17, 15, 14, 19] #create scatterplot plt.scatter (x, y) #get current axes ax = plt.gca () #hide axes and borders plt.axis('off') 

Настраиваем формат отображения меток у координатных осей

Помимо управления расположения меток на координатных осях можно также задавать формат вывода информации. Для этого используются различные форматеры. Но, прежде чем мы перейдем к их рассмотрению, отмечу две довольно распространенные на практике функции:

с помощью которых часто делают сокрытие текстовых меток для тиков графика:

import numpy as np import matplotlib.pyplot as plt fig = plt.figure(figsize=(7, 4)) ax = fig.add_subplot() x = np.arange(-np.pi/2, np.pi, 0.1) ax.plot(x, np.sin(x)) ax.set_xticklabels([]) ax.set_yticklabels([]) ax.grid() plt.show()

Если же требуется более тонкая настройка формата тиков, то для этого в matplotlib используется функция set_major_formatter(), которая применяет тот или иной форматер для форматирования текстовой информации у соответствующих координатных осей.

Само форматирование осуществляется с помощью различных классов, расположенных в ветке:

И на этом занятии мы рассмотрим основные из них.

NullFormatter

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

from matplotlib.ticker import NullFormatter

А, затем, применить к оси абсцисс или ординат:

ax.xaxis.set_major_formatter(NullFormatter())

Мы здесь сначала обращаемся к объекту xaxis, отвечающий за ось Ox, и вызываем функцию set_major_formatter(), передавая ей экземпляр класса NullFormatter. В результате, подписи у этой оси исчезают и мы видим следующий результат:

По аналогии, можно работать и с осью ординат, только для этого следует использовать объект yaxis:

ax.yaxis.set_major_formatter(NullFormatter())

Увидим похожий результат, но уже для оси Oy.

FormatStrFormatter

Следующий класс FormatStrFormatter позволяет устанавливать формат числовых данных подписей рисок. Для этого в конструктор данного класса передается спецификатор числа нужного формата, например, запись вида:

ax.yaxis.set_major_formatter(FormatStrFormatter('%d'))

будет округлять все числа до целых и по оси Oy мы увидим следующее:

Если же указать спецификатор в виде:

ax.yaxis.set_major_formatter(FormatStrFormatter('%f'))

то получим вещественные числа с шестью знаками после запятой. Для управления точностью вещественных чисел используется запись вида:

ax.yaxis.set_major_formatter(FormatStrFormatter('%.2f'))

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

Интересно, что здесь можно формировать любую строку заданного формата, например, добавлять надписи:

ax.yaxis.set_major_formatter(FormatStrFormatter('y = %.2f'))

В итоге, перед каждым числом будет записано «y = ».

FuncFormatter

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

Для этого воспользуемся классом FuncFormatter и передадим ему ссылку на функцию formatOy:

ax.yaxis.set_major_formatter(FuncFormatter(formatOy))

Сама же функция будет выглядеть так:

def formatOy(x, pos): return f"[]" if x  0 else f"()"

Здесь x – это текущее значение риски; pos – текущая позиция (номер) риски от 0 до N, где N+1 – общее число рисок.

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

ScalarFormatter

Этот форматер используется пакетом matplotlib по умолчанию. Он отображает числовые данные так, как они есть с небольшими манипуляциями. Если число оказывается очень большим (больше 10^10), то его множитель выносится:

То же самое происходит и с очень маленькими числами (меньше 10^-10). Но мы можем изменить это поведение и настроить свой диапазон больших и малых значений. Например, если вывести график в диапазоне степени 10^5:

fig = plt.figure(figsize=(7, 4)) ax = fig.add_subplot() x = np.arange(-2*np.pi, 2*np.pi, 0.1) ax.plot(x, np.sinc(x) * 1e5) ax.grid() plt.show()

То числа будут отображены целиком без сокращений. Но, если сформировать ScalarFormatter и указать максимальную и минимальную степень 4:

sf = ScalarFormatter() sf.set_powerlimits((-4, 4)) ax.yaxis.set_major_formatter(sf)

то результат будет следующий:

Как видите, степень 10^5 была вынесена за скобки.

Если мы хотим настроить такое поведение глобально для всех графиков, то можно воспользоваться словарем rcParams и переопределить ключ axes.formatter.limits:

matplotlib.rcParams["axes.formatter.limits"] = (-4, 4)

FixedFormatter

Если каждой риске оси нужно присвоить строго определенное значение, то для этого хорошо подходит класс FixedFormatter. Работает он очень просто. Его конструктору передается список значений, которые, затем, будут подставлены соответствующим рискам. Например:

ax.xaxis.set_major_locator(FixedLocator([-3, -2, -1, 0, 1, 2, 3])) ax.xaxis.set_major_formatter(FixedFormatter(['a', 'b', 'c', 'd', 'e', 'f', 'g']))

Причем, обратите внимание, мы использовали класс FixedFormatter совместно с классом FixedLocator, так как желательно, чтобы списки по длинам в этих классах совпадали.

Мы с вами рассмотрели лишь некоторые популярные классы форматеров, полный их список можно найти на странице официальной документации:

Видео по теме

#1. Установка пакета и основные возможности

#2. Функция plot для построения и оформления двумерных графиков

#3. Отображение нескольких координатных осей в одном окне

#4. Граничные значения осей и локаторы для расположения меток на них

#5. Настраиваем формат отображения меток у координатных осей

#6. Делаем логарифмический масштаб у координатных осей

#7. Размещаем стандартные текстовые элементы на графике

#8. Добавляем легенду и рисуем геометрические фигуры на графиках

#9. Рисуем ступенчатые, стековые, stem и точечные графики

#10. Рисуем гистограммы, столбчатые и круговые диаграммы

#11. Показ изображений и цветовых сеток

#12. Как строить трехмерные графики

#13. Рисуем линии уровня функциями contour, contourf и tricontour, tricontourf

#14. Создаем анимацию графиков Классы FuncAnimation и ArtistAnimation

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

Как убрать промежуточные надписи на оси на графике Plotly?

Здравствуйте. Вопрос для экспертов в plotly. Я создаю график с тонкими настройками. Создал вот такой график (см. фото). на логарифмической оси абсцисс мне нужно убрать маленькие цифры между основными делениями при этом оставить линии сетки. Я могу убрать эти цифры при помощи атрибута dtick=1 в методе update_xaxes класса Figure из plotly.graph_objects, но тогда скроются и линии. Как мне сделать то, что нужно?
6151a39f3142a278761890.jpeg
6151a46660bfd501247649.jpeg

  • Вопрос задан более двух лет назад
  • 279 просмотров

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *