Установите пределы оси AxisArtist с помощью plt.Circle в matplotlib

Я подготовил простую функцию масштабирования, используя css transform вместо font-size. Вы можете использовать его внутри любого контейнера, вам не нужно устанавливать медиа-запросы и т. Д.:)

Сообщение в блоге: https://blog.polarbits.co/2017/03/07/ full-width-css-js-scalable-header /

Код:

function scaleHeader() {
  var scalable = document.querySelectorAll('.scale--js');
  var margin = 10;
  for (var i = 0; i < scalable.length; i++) {
    var scalableContainer = scalable[i].parentNode;
    scalable[i].style.transform = 'scale(1)';
    var scalableContainerWidth = scalableContainer.offsetWidth - margin;
    var scalableWidth = scalable[i].offsetWidth;
    scalable[i].style.transform = 'scale(' + scalableContainerWidth / scalableWidth + ')';
    scalableContainer.style.height = scalable[i].getBoundingClientRect().height + 'px';
  }
}

Рабочая демонстрация: https://codepen.io/ maciejkorsan / ручка / BWLryj

1
задан Roma Karageorgievich 31 March 2019 в 01:10
поделиться

4 ответа

Я не могу понять проблему в полноте, потому что простое добавление ax.set_ylim(-5, 5); ax.set_xlim(-5, 5) в ваш код на самом деле дает хороший сюжет.

Но, в общем, вы можете использовать ax.set_aspect("equal", adjustable="box"), чтобы настроить оси в соответствии с вашими пределами при использовании равного формата. Так что для асимметричных пределов это может выглядеть как

import matplotlib.pyplot as plt
from mpl_toolkits.axisartist.axislines import SubplotZero

fig = plt.figure(1, figsize=(6, 6))

ax = SubplotZero(fig, 111)
fig.add_subplot(ax)

centreCircle = plt.Circle((0, 0), 1, color="black", fill=False, lw=2)

# Draw the circles to our plot
ax.add_patch(centreCircle)
ax.set_aspect("equal", adjustable="box")

ax.set_ylim(-5, 5)
ax.set_xlim(-5, 10)

plt.show()

enter image description here

0
ответ дан ImportanceOfBeingErnest 31 March 2019 в 01:10
поделиться

Я думаю, вы просто пытаетесь установить ylim (-5,5)

0
ответ дан Andrea Barnabò 31 March 2019 в 01:10
поделиться

Вам просто нужно

ax.set_ylim(-5, 5)

или даже

plt.ylim(-5, 5)
0
ответ дан Sheldore 31 March 2019 в 01:10
поделиться

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

import matplotlib.pyplot as plt
import numpy as np
from matplotlib.patches import Circle

fig, ax = plt.subplots(1,1, figsize=(7,7))
ax.add_artist(Circle((0,0),1,color='b'))
ax.set_xlim((-5,5))
ax.set_ylim((-5,5))

plt.show()

EDIT: повторить с AxisArtist

import matplotlib.pyplot as plt
import mpl_toolkits.axisartist as AA
%matplotlib "notebook"

fig = plt.figure(1, figsize=(5,5))
ax = AA.Subplot(fig, 1, 1, 1)
fig.add_subplot(ax)
centreCircle = plt.Circle((0, 0), 1, color="black", fill=False, lw=2)
ax.add_patch(centreCircle)
ax.set_ylim(-5, 5)
ax.set_xlim(-5, 5)
plt.show()
plt.savefig('circle5x5v2.png')

enter image description here

0
ответ дан BigH 31 March 2019 в 01:10
поделиться
Другие вопросы по тегам:

Похожие вопросы: