我想在熱圖上寫兩條不同的行。我的代碼是
lines = [0,10,300,500,2560, 34500]
with sns.axes_style("white"):
f, ax = plt.subplots(figsize=(50, 50))
ax = sns.heatmap(X)
ax.axvline(4000, *ax.get_ylim(), ymin = lines[0], ymax = lines[4], lw = 8.0, color = 'red')
ax.axvline(4000, *ax.get_ylim(), ymin = lines[5], lw = 8.0, color = 'green')
我得到一個錯誤
TypeError: axvline() got multiple values for argument 'ymin'.
這意味著什么?
uj5u.com熱心網友回復:
根據檔案, ,axvline的簽名是
axvline(x=0, ymin=0, ymax=1, **kwargs)
所以當你做
ax.axvline(4000, *ax.get_ylim(), ymin = lines[0], ymax = lines[4],
(和get_ylim()回報2元組),你傳遞ymin和ymax的兩倍。
你需要要么
- 不使用
*ax.get_ylim(),或 - 不使用
ymin和ymax分開。
uj5u.com熱心網友回復:
好的,這個問題有一個解決方法。上面的評論者提到 y 軸應始終采用 0 和 1 之間的數字。
所以我們可以用百分比來解決。
lines = [0,10,300,500,2560, 34500]
p_1 = lines[4]/lines[-1]
p_2 = 1
with sns.axes_style("white"):
f, ax = plt.subplots(figsize=(50, 50))
ax = sns.heatmap(X)
ax.axvline(4000, *ax.get_ylim(), ymin = 1-p1, ymax = p2, lw = 8.0, color = 'red')
ax.axvline(4000, *ax.get_ylim(), ymin = 0,ymax = 1-p1, lw = 8.0, color = 'green')
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/337705.html
標籤:Python matplotlib 海生
