尝试在 seaborn 中绘制两条单独的线时出现错误
I am getting error when trying to plot two seperate lines in seaborn
我想在热图上写两条不同的线。我的密码是
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'.
这是什么意思?
According to the documentation,,axvline
的签名是
axvline(x=0, ymin=0, ymax=1, **kwargs)
所以当你这样做时
ax.axvline(4000, *ax.get_ylim(), ymin = lines[0], ymax = lines[4],
(和 get_ylim()
returns 一个二元组),你传递了 ymin
和 ymax
两次。
您需要
- 不使用
*ax.get_ylim()
,或
- 不要分开使用
ymin
和 ymax
。
好的,这个问题有变通办法。上面的评论者提到 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')
我想在热图上写两条不同的线。我的密码是
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'.
这是什么意思?
According to the documentation,,axvline
的签名是
axvline(x=0, ymin=0, ymax=1, **kwargs)
所以当你这样做时
ax.axvline(4000, *ax.get_ylim(), ymin = lines[0], ymax = lines[4],
(和 get_ylim()
returns 一个二元组),你传递了 ymin
和 ymax
两次。
您需要
- 不使用
*ax.get_ylim()
,或 - 不要分开使用
ymin
和ymax
。
好的,这个问题有变通办法。上面的评论者提到 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')