Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/meteor/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 在Seaborn情节中获得乳胶符号,而不会弄乱查询_Python_Pandas_Seaborn - Fatal编程技术网

Python 在Seaborn情节中获得乳胶符号,而不会弄乱查询

Python 在Seaborn情节中获得乳胶符号,而不会弄乱查询,python,pandas,seaborn,Python,Pandas,Seaborn,我构建了一个数据帧,如下所示: import pandas as pd import seaborn as sns import matplotlib.pyplot as plt df = pd.DataFrame({ "x": [0, 1, 0, 1], "y": [1, 2, 1.5, 3], "sigma": [1, 1, 2, 2], }) sns.lineplot(data=df.rename({"sigma": SIGMA}, axis=1), x="x"

我构建了一个
数据帧
,如下所示:

import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt

df = pd.DataFrame({
    "x": [0, 1, 0, 1],
    "y": [1, 2, 1.5, 3],
    "sigma": [1, 1, 2, 2],
})
sns.lineplot(data=df.rename({"sigma": SIGMA}, axis=1), x="x", y="y", hue=SIGMA, legend="full")
它支持nice
查询
功能:

# OK!
pts = df.query("sigma < 2")
print(pts)
但我意识到我更喜欢乳胶符号
\sigma
,而不是图例中的“sigma”。Matplotlib可以渲染它。我试着:

SIGMA = "$\\sigma$"
df = pd.DataFrame({
    "x": [0, 1, 0, 1],
    "y": [1, 2, 1.5, 3],
    SIGMA: [1, 1, 2, 2],
})
plt.clf()
sns.lineplot(data=df, x="x", y="y", hue=SIGMA, legend="full")
plt.show()
阴谋仍然有效。但是现在如果我尝试查询:

# Fails!
pts = df.query(SIGMA + " < 2")
print(pts)
有没有办法:

  • 为绘图中使用但不用于查询的列指定不同的“显示名称”,或
  • 适当地转义LaTeX字符串,以便Pandas查询引擎能够处理它

  • 我想要一个。如果可能的话,因为这会使查询看起来更干净。

    您可以这样绘制:

    import pandas as pd
    import seaborn as sns
    import matplotlib.pyplot as plt
    
    df = pd.DataFrame({
        "x": [0, 1, 0, 1],
        "y": [1, 2, 1.5, 3],
        "sigma": [1, 1, 2, 2],
    })
    
    sns.lineplot(data=df.rename({"sigma": SIGMA}, axis=1), x="x", y="y", hue=SIGMA, legend="full")
    
    这将在将列传递给绘图函数之前将其重命名为
    SIGMA
    ,因此绘图函数看到的是一个名为
    “$\\SIGMA$”
    的列

    默认情况下,
    rename
    返回原始数据帧的副本,而不修改原始数据帧,因此这允许您在其他上下文中正常地将数据帧与列
    “sigma”
    一起使用。但是,缺点是,如果数据很大,创建新的数据帧可能会影响性能。在这种情况下,您可以编写一个函数,在适当的位置重命名列,进行打印,然后在末尾恢复名称。编写一个自定义函数来封装您可能希望合并到绘图中的各种调整,而不破坏实际数据,这通常不是一个坏主意