繁体   English   中英

如何控制哪条线在seaborn多线图中获得什么标记?

[英]How to control which line gets what marker in a seaborn multi-line plot?

我无法控制哪个数据类别在 seaborn 的多线图中获得什么标记。 为了证明我在这里尝试做的是一个人为的例子 -

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

sns.set(style="ticks")
sns.set_context("paper", rc={"font.size":8,"axes.titlesize":20,"axes.labelsize":15})
fig, ax = plt.subplots()

df = pd.DataFrame({'A': [1,2,3,4,1,2,3,4,1,2,3,4], 'B': ['a', 'a', 'a', 'a', 'b', 'b', 'b', 'b', 'c', 'c', 'c', 'c'], 'C': [1,1,3,4,1,1,3,3,1,1,2,3]})

sns.lineplot(x='A', y='C', hue='B', hue_order=['c', 'b', 'a'], markers=[{'c': 'X', 'b': 's', 'a': 'o'}], palette={'a': 'Orange', 'b': 'Green', 'c': 'Red'}, dashes=False, data=df, markers=True, ax=ax)

plt.title('A Plot')
ax.set(xlabel='Time', ylabel='#')
ax.legend(title='Legend', loc='upper left', labels=['A', 'B', 'C'])
ax.set(xticks=df['A'].values)
plt.gca().set_position([0, 0, 1, 1])
plt.show()

但是图像渲染时没有任何标记 - 图中没有标记

当我做style='B'我收到以下错误 -

ValueError: These `style` levels are missing markers: {'b', 'c'}

我尝试了style_order=['a', 'b', 'c']但我得到了与上面相同的情节。

我如何实际获得带有正确情节线的标记?

您必须同时提供hue="B"style="B" ,然后为markers={...}提供一个字典(您实际上在代码中传递了一个包含字典的列表)。

sns.lineplot(x='A', y='C', hue='B', style='B', data=df, hue_order=['c', 'b', 'a'], markers={'c': 'X', 'b': 's', 'a': 'o'}, dashes=False, palette={'a': 'Orange', 'b': 'Green', 'c': 'Red'})

在此处输入图片说明

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM