簡體   English   中英

Python ValueError-從matplotlib軸提取浮點數

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM