首页 > 解决方案 > Matplotlib/Seaborn:自 3.3 起不推荐将非整数作为三元素位置规范传递

问题描述

我不明白这个错误信息:

MatplotlibDeprecationWarning: Passing non-integers as three-element position specification is deprecated since 3.3 and will be removed two minor releases later.

你能给我一个提示吗?

仅供参考,我的(不可执行)代码如下

import seaborn as sns
import matplotlib.pyplot as plt

for p in ps:
    p_metrics = output_metrics.loc[output_metrics["p"] == p, :]
    g = sns.relplot(x="k", y="metric_value", col="metric_name", hue="ref/eval", style="ref/eval",
                    col_wrap=np.ceil(np.sqrt(len(metrics))), palette="muted", kind="line",
                    dashes=False, legend="full", facet_kws={"sharex": False, "sharey": False},
                    data=p_metrics, markers=self.filled_markers)

    g.savefig(f"plot_cat1_p={p}.png")
    if show:
        plt.show()

标签: matplotlibseabornpython-3.6

解决方案


我认为问题在于col_wrap=期待 anint并且您正在传递 a float,尝试将其转换为 int:col_wrap=int(np.ceil(np.sqrt(len(metrics))))


推荐阅读