我正在尝试用两条线绘制一个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')
达到我想要的结果的正确方法是什么?
您需要记住,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'}
)