我想绘制二次数据,而不是绘图,而是绘制y轴。 我试图在图中说清楚。 首先,我将A与C进行了对比。
现在我想绘制A对B,但不是作为一条线,而是与A一致的数字。 在这种情况下,A是深度。在深度上有两个测量B和C.我已经将A和C之间的关系绘制成线图。现在我想将A和B的关系作为一种表添加到辅助y轴中。 注意:我不需要辅助y轴!我需要将B(A = 2),B(A = 0),B(A = -2)等的值表示为第二y轴中的数字。因此,只有A的刻度必须在第二轴上得到数字B(A)。
0 - + - 0
-1 - + - 0.5
-2 - + - 0.62
-3 - + - 2.1
A -4 - + - 1.5 B
-5 - +++ - 1.9
-6 - + - 2.8
-7 - + - 3.0
-8 - + - 4.1
--------------------
C
[实施例] [1]
我已经实现了Stefan的示例,但是使用了列表而不是函数。 (dpt[0]
= a[0]
= c[0]
,dpt[22]
= a[22]
= c[22]
等)
我的列表很长,有很多小数。因此,我的刻度值与列表中的数据不完全对应。我找到了最接近的值并将数字四舍五入。对于那些感兴趣的人,这对我有用:
ax2 = ax1.twinx()
depth = [round(x, 1) for x in dpt] # In my case the original list used 5 decimals and next line ‘difr’ has 1 decimal.
def mapAtoB(A):
difr= min(depth, key=lambda x: abs(x - A)) #Find the value in ‘depth’ which is closest to the tick-value A.
B = round(a[depth.index(difr)],2) #The index value (difr==depth) is plugged into the list I want on the y-axis. The obtained value needed to be rounded as well.
return B
ax2.plot(c, dpt, alpha=0)
ticks = ticker.FuncFormatter(lambda dpt, pos: '{0:g}'.format(mapAtoB(dpt)))
ax2.yaxis.set_major_formatter(ticks)
我希望我的榜样足够清楚!
答案 0 :(得分:1)
由于您可能知道var d = new Date();
var n = d.getTime(); // n == time in milliseconds since 1st Jan 1970
var weekday = d.GetDay() // 0...6 ; 0 == Sunday, 6 = Saturday, 4 = Thursday
var numDaysToNextThursday = weekday >= 4 ? 7 - (weekday-4) : 4 - weekday;
var nextThursday_msecs = n + numDaysToNextThursday * 24 * 60 * 60 * 1000;
var theDate = new Date(nextThursday_msecs); // this is the date
如何映射到A
,只需将y-ticks从A转换为y-ticks of B,绘制两者并隐藏B的图。
示例:
B