Вы можете получить один элемент, запустив
document.querySelector('.myElement').style.size = '100px';
, но он будет работать для первого элемента с классом .myElement.
Если вы хотите применить это для всех элементы с классом я предлагаю вам использовать
document.querySelectorAll('.myElement').forEach(function(element) {
element.style.size = '100px';
});
Вместо того, чтобы менять тики, почему бы не заменить единицы? Сделайте отдельный массив X
значений x, чьи единицы находятся в нм. Таким образом, при построении данных он уже в правильном формате! Просто убедитесь, что вы добавили xlabel
, чтобы указать единицы (которые должны всегда выполняться в любом случае).
from pylab import *
# Generate random test data in your range
N = 200
epsilon = 10**(-9.0)
X = epsilon*(50*random(N) + 1)
Y = random(N)
# X2 now has the "units" of nanometers by scaling X
X2 = (1/epsilon) * X
subplot(121)
scatter(X,Y)
xlim(epsilon,50*epsilon)
xlabel("meters")
subplot(122)
scatter(X2,Y)
xlim(1, 50)
xlabel("nanometers")
show()
[/g1]
Чтобы установить диапазон оси x, вы можете использовать set_xlim(left, right)
, здесь: docs
Обновление:
Похоже, вам нужен одинаковый сюжет, но только изменяйте значения «галочки», вы можете сделать это, получив значения тика, а затем просто изменив их на все, что захотите. Поэтому для ваших нужд это будет так:
ticks = your_plot.get_xticks()*10**9
your_plot.set_xticklabels(ticks)
ticks.astype(int)
вместо ticks
.
– Mr.H
7 October 2017 в 14:33
get_xticks()
не работает до тех пор, пока вы не заговорите. Ужасно раздражает и бессмысленно, чтобы это было так.
– ArturJ
13 March 2018 в 00:48
Как вы заметили, xscale
и yscale
не поддерживают простое линейное повторное масштабирование (к сожалению). В качестве альтернативы ответу Hooked вместо того, чтобы возиться с данными, вы можете обмануть эти метки следующим образом:
ticks = ticker.FuncFormatter(lambda x, pos: '{0:g}'.format(x*scale))
ax.xaxis.set_major_formatter(ticks)
Полный пример, показывающий масштабирование x и y:
import numpy as np
import pylab as plt
import matplotlib.ticker as ticker
# Generate data
x = np.linspace(0, 1e-9)
y = 1e3*np.sin(2*np.pi*x/1e-9) # one period, 1k amplitude
# setup figures
fig = plt.figure()
ax1 = fig.add_subplot(121)
ax2 = fig.add_subplot(122)
# plot two identical plots
ax1.plot(x, y)
ax2.plot(x, y)
# Change only ax2
scale_x = 1e-9
scale_y = 1e3
ticks_x = ticker.FuncFormatter(lambda x, pos: '{0:g}'.format(x/scale_x))
ax2.xaxis.set_major_formatter(ticks_x)
ticks_y = ticker.FuncFormatter(lambda x, pos: '{0:g}'.format(x/scale_y))
ax2.yaxis.set_major_formatter(ticks_y)
ax1.set_xlabel("meters")
ax1.set_ylabel('volt')
ax2.set_xlabel("nanometers")
ax2.set_ylabel('kilovolt')
plt.show()
И, наконец, у меня есть кредиты для изображения:
Обратите внимание, что если у вас есть text.usetex: true
, как у меня, вы можете захотеть заключите метки в $
, например: '${0:g}$'
.