关于壁虱定位器和双轴,我面临着令人惊讶的行为。
我有一个Axes
对象,并将matplotlib.dates.DayLocator
设置为其主要定位符,并将matplotlib.dates.DateFormatter
设置为其主要格式化程序。
import datetime as dt
import numpy as np
from matplotlib import figure as mpfig
from matplotlib.backends import backend_agg as mpback
from matplotlib import dates as mpdates
start = dt.datetime(2018, 2, 16)
end = start + dt.timedelta(days=10)
fig = mpfig.Figure(figsize=(16, 4))
mpback.FigureCanvas(fig)
ax = fig.add_subplot(111)
ax.xaxis.set_major_locator(mpdates.DayLocator())
ax.xaxis.set_major_formatter(mpdates.DateFormatter("%d/%m %H:%M"))
ax.grid(True)
x = np.arange(start, end, dt.timedelta(days=1)).astype(dt.datetime)
y = np.random.randint(10, 1000, size=x.size)
ax.plot(x, y)
fig.savefig('test.png')
然后,我用Axes
创建一个孪生ax.twinx()
但是,一旦我在新的Axes
上绘制了内容,刻度线便成为默认格式。
# ...
x = np.arange(start, end, dt.timedelta(days=1)).astype(dt.datetime)
y = np.random.randint(10, 1000, size=x.size)
ax2 = ax.twinx()
ax2.plot(x, y)
如您所见,格式不再是我指定的"%d/%m %H:%M"
,而是变成了"%y-%m-%d"
。
更令人不安的是,如果我设置x窗口,然后在ax2
上绘制某些东西,我的刻度定位器将被忽略,并使用默认的定位器。
# ...
ax.set_xlim(start, start + dt.timedelta(days=1))
ax.plot(x, y)
这段代码产生了这个数字:
# ...
ax.set_xlim(start, start + dt.timedelta(days=1))
ax2 = ax.twinx()
ax2.plot(x, y)
但这会导致:
根据,新的Axes
和原始的Axes.twinx
应该在X轴上共享其限制,刻度和刻度:
有关Figure.add_axes
的文档,由ax2
调用
sharex,sharey:轴,可选
与sharex和/或sharey共享x或y轴。该轴将具有与共享轴相同的限制,刻度和刻度。
那么,我在这里想念什么?
为什么在ax
上绘制会影响我手动设置的 renderComplete: function() {
const rows = this.getRows();
console.log('rows', rows);
for (let i = 0; i < rows.length; i++) {
const childRows = rows[i].getTreeChildren();
if (childRows.length > 0) {
// console.log('childRows', childRows);
// this.selectRow(childRows);
for (let j = 0; j < childRows.length; j++) {
const gender = childRows[j].getData().gender;
console.log('gender', gender);
if (gender === 'male') {
this.selectRow(childRows[j]);
const childRows2 = childRows[j].getTreeChildren();
}
}
}
}
}
});
的价格变动?