首页 > 解决方案 > Seaborn 散点图在某些图上反转 y 轴?

问题描述

我有两组数据用于创建散点图。我使用一个函数来为每一个创建绘图。出于某种原因,其中一组的图在图的顶部显示最小 y 值(翻转的图像,但文本未反转)。另一个按预期显示。

数据是从 Excel 文件中读取的,并且本质上是相同的。正如我所说,我为每个数据集调用相同的函数。

绘制情节的代码是:

from scipy.stats.distributions import chi2
import matplotlib.pyplot as plt
import seaborn as sns
import numpy as np

    def mcbf_plot(df, alpha=0.8):
        xval = list(range(len(df)))
        xval_l = [item-0.1 for item in xval]
        xval_r = [item+0.1 for item in xval]
        xlabs = list(df['venue'])
        g = sns.scatterplot(data=df, x=xval, y='mcbof_pe', s=100, color='k')
        plt.plot([xval,xval], [df['ci_mcbof_l'],df['ci_mcbof_h']], color='k')
        plt.plot([xval_l, xval_r], [df['ci_mcbof_l'],df['ci_mcbof_l']],color='k')
        plt.plot([xval_l, xval_r], [df['ci_mcbof_h'],df['ci_mcbof_h']],color='k')
        plt.xticks(np.arange(0, len(df), 1.0))
        plt.title('Results by Event')
        plt.xlabel('Event')
        plt.ylabel('Cycles')
        g = g.set_xticklabels(labels=xlabs,rotation=45)

这是我运行以生成情节的脚本:

%matplotlib inline
import os
import glob
from pandas import DataFrame, Series
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns
import datetime
import binom.binom as bn 
import matplotlib.dates as mdates

hist_ram = pd.read_excel('c:/User/Documents/RAM/historic_ram.xlsx')

bn.mcbf_plot(hist_ram, 0.8)

这是数据的一个例子:

   venue   miles  events  fails mmbof_pe ci_mmbof_l ci_mmbof_h mcbof_pe  \
 0     a  1749.8     416      5   349.96    188.664    719.315     83.2
 1     b   353.3      47     14  25.2357    17.5527    37.3088  3.35714
 2     c  1610.1     288      7  230.014    136.786    413.401  41.1429
 3     d   549.1      83      0     None    341.175       None     None

   ci_mcbof_l ci_mcbof_h
 0    44.8533    171.011
 1    2.33505    4.96324
 2    24.4671    73.9454
 3    51.5708       None

知道为什么 seaborn/matplotlib 会反转一个情节但不能同时反转(或两者都不反转)吗?

编辑添加:是导致问题的原因。是否有另一种方法表明数据集中给定单元格没有值?基本上,我想绘制失败测试的点估计和置信区间,但只绘制没有失败的测试的置信下限。数据将 LCL 视为 LCI 值,并将 PE 和 UCI 设置为None

标签: pythonmatplotlibseabornscatter-plot

解决方案


@JohanC 是正确的!我将“无”更改为“math.nan”(并添加了“导入数学”),现在它可以正确绘制。


推荐阅读