仅为一条线设置线图标记

问题描述 投票:0回答:1

我正在尝试用两条线绘制一个seaborn线图:一条带标记,另一条没有。在文档(https://seaborn.pydata.org/ generated/seaborn.lineplot.html)中,它说,为了实现这一点,我必须传递

markers
参数以及设置
style

我尝试了两种不同的方法:

在第一个中,我将

markers
设置为
True/False
并传递
marker='o'
来设置默认标记。这种方法的问题是它不使用标记。好像用的是
'-'
白色标记为默认标记。

fig, ax = plt.subplots(figsize=(7, 5))
sns.lineplot(data=my_data, x='Date', y='Value', markers={'Series 1': True, 'Series 2': False}, style='Name', marker = 'o')

在第二种方法中,我将

markers
设置为
"o" and None
,但它会引发
Value Error: Filled and line art markers cannot be mixed

fig, ax = plt.subplots(figsize=(7, 5))
sns.lineplot(data=my_data, x='Date', y='Value', markers={'Series 1': 'o', 'Series 2': None}, style='Name')

达到我想要的结果的正确方法是什么?

python seaborn linechart
1个回答
0
投票

您需要记住,seaborn 是 matplotlib 的包装器,因此如果错误没有意义或文档似乎不完整,请搜索 matplotlib 文档。

我发现

[',', '.', 'o', 'v', '^', '<', '>', '8', 's', 'p', '*', 'h', 'H', 'D', 'd', 'P', 'X']
(不是详尽的列表)可用作标记的输入,并且
','
特别会添加一个像素标记,该像素标记在视觉上看起来像没有标记(除非您放大很多)。希望这有帮助。

参见下面的示例:

import seaborn as sns
flights = sns.load_dataset("flights")
my_data = flights[flights['month'].isin(['Jan', 'Feb'])]
sns.lineplot(data=my_data, x='year', y='passengers', style='month', 
    style_order=['Jan', 'Feb'], markers={'Jan': ',', 'Feb': 'o'}
)

© www.soinside.com 2019 - 2024. All rights reserved.