seaborn库是否不更新barplot?

时间:2019-04-14 07:50:32

标签: python-3.x matplotlib seaborn

我正在用seaborn绘制一个地势图。我不想在x轴上看到一组(nan),因此我对其进行了过滤。但是,我仍然看到它。我可以打印并看到nan组确实已被过滤(请参见下面的数据框内容。)。以下是数据框和图形。

enter image description here

以下是过滤后的数据帧:

     channel name      model heuristic     total conversions
0            FB        first touch         104.000000
1           RAD        first touch         112.000000
2            TV        first touch           4.000000
3           OOH        first touch         167.000000
5            FB        last touch          12.000000
6           RAD        last touch         112.000000
7            TV        last touch         259.000000
8           OOH        last touch           4.000000
10           FB        linear touch         120.000000
11          RAD        linear touch          71.333333
12           TV        linear touch         109.666667
13          OOH        linear touch          86.000000
15           FB        markov model          81.561696
16          RAD        markov model          95.122526
17           TV        markov model         120.958421
18          OOH        markov model          89.177205

以下是绘制图形的代码:

plt.figure(figsize=(20, 10))

sns.barplot(x="channel name",
            y="total conversions",
            hue="model heuristic",
            data=pychattr_model.melted_data_[0])
plt.xlabel("Channel Name",
           size=20,
           weight="bold")
plt.ylabel("Conversions",
           size=20,
           weight="bold")
plt.title("Total Conversions",
          size=30,
          weight="bold")

plt.show()

感谢任何帮助。谢谢

1 个答案:

答案 0 :(得分:0)

尝试从您提供给barplot的数据中删除NaN值:

plt.figure(figsize=(20, 10))

sns.barplot(x="channel name",
            y="total conversions",
            hue="model heuristic",
            data=pychattr_model.melted_data_[0].dropna())
plt.xlabel("Channel Name",
           size=20,
           weight="bold")
plt.ylabel("Conversions",
           size=20,
           weight="bold")
plt.title("Total Conversions",
          size=30,
          weight="bold")

plt.show()