[英]Python matplotlib ValueError for logit scale axis label
[英]Python ValueError - Extracting a float from a matplotlib axis
我正在嘗試繪制一個函數,該函數的公式會更改為特定值(mn),但我無法弄清楚如何將x軸的值與此數字進行比較,以確定要使用哪個公式。
import matplotlib.pyplot as plt
import numpy as np
mn = 10312054216.046213
mz = 91.1876
a1z = 98.330
a2z = 29.571
a3z = 8.396
b1, b2, b3 = -13/(4*pi), 19/(12*pi), 7/(2*pi)
b1p, b2p, b3p = -157/(36*pi), 11/(12*pi), 17/(6*pi)
c1, c2, c3 = 3/5, 1, 1
ms = np.linspace(100, 10e18, num = 100, endpoint = True)
def a1(ms, mn):
if (ms < mn):
return ( c1*(a1z + b1*np.log(ms/mz)) )**(-1)
if (ms >= mn):
a1n = ( c1*(a1z + b1*log(mn/mz)) )**(-1)
return ( c1*(a1n + b1p*log(ms/mn)) )**(-1)
plt.xscale('log')
plt.plot(ms, 1/a1(ms, mn))
plt.show()
僅使用ms> mn即可
ValueError:具有多個元素的數組的真值是不明確的。 使用a.any()或a.all()
調用a1時,如何提取用於ms的當前值?
不確定要計算的內容,但是if (ms < mn)
的比較失敗,因為在調用函數時
plt.plot(ms, 1/a1(ms, mn))
那么ms
是一個numpy數組,而mn
是一個數字,您無法將二者進行比較。 相反,如果要繪制ms
每個元素的a1
值,則可以嘗試以下操作:
plt.plot(ms, [1/a1(x, mn) for x in ms])
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.