将图例添加到 Seaborn 点图

2024-01-25

我正在使用以下方法将多个数据帧绘制为点图seaborn。我还在绘制所有数据框在同一轴上.

我如何在情节中添加图例?

我的代码获取每个数据帧并将其一个又一个地绘制在同一个图上。

每个数据框都有相同的列

date        count
2017-01-01  35
2017-01-02  43
2017-01-03  12
2017-01-04  27 

我的代码:

f, ax = plt.subplots(1, 1, figsize=figsize)
x_col='date'
y_col = 'count'
sns.pointplot(ax=ax,x=x_col,y=y_col,data=df_1,color='blue')
sns.pointplot(ax=ax,x=x_col,y=y_col,data=df_2,color='green')
sns.pointplot(ax=ax,x=x_col,y=y_col,data=df_3,color='red')

这会在同一个图上绘制 3 条线。然而传说却不见了。文档 http://seaborn.pydata.org/generated/seaborn.pointplot.html不接受label争论 。

一种有效的解决方法是创建一个新的数据框并使用hue argument.

df_1['region'] = 'A'
df_2['region'] = 'B'
df_3['region'] = 'C'
df = pd.concat([df_1,df_2,df_3])
sns.pointplot(ax=ax,x=x_col,y=y_col,data=df,hue='region')

但我想知道是否有一种方法可以为代码创建图例,首先将顺序点图添加到图中,然后添加图例。

示例输出:


我建议不要使用seabornpointplot用于绘图。这使事情变得不必要的复杂。
而是使用 matplotlibplot_date。这允许为图设置标签并自动将它们放入图例中ax.legend().

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

date = pd.date_range("2017-03", freq="M", periods=15)
count = np.random.rand(15,4)
df1 = pd.DataFrame({"date":date, "count" : count[:,0]})
df2 = pd.DataFrame({"date":date, "count" : count[:,1]+0.7})
df3 = pd.DataFrame({"date":date, "count" : count[:,2]+2})

f, ax = plt.subplots(1, 1)
x_col='date'
y_col = 'count'

ax.plot_date(df1.date, df1["count"], color="blue", label="A", linestyle="-")
ax.plot_date(df2.date, df2["count"], color="red", label="B", linestyle="-")
ax.plot_date(df3.date, df3["count"], color="green", label="C", linestyle="-")

ax.legend()

plt.gcf().autofmt_xdate()
plt.show()

In case one is still interested in obtaining the legend for pointplots, here a way to go:
sns.pointplot(ax=ax,x=x_col,y=y_col,data=df1,color='blue')
sns.pointplot(ax=ax,x=x_col,y=y_col,data=df2,color='green')
sns.pointplot(ax=ax,x=x_col,y=y_col,data=df3,color='red')

ax.legend(handles=ax.lines[::len(df1)+1], labels=["A","B","C"])

ax.set_xticklabels([t.get_text().split("T")[0] for t in ax.get_xticklabels()])
plt.gcf().autofmt_xdate()

plt.show()
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

将图例添加到 Seaborn 点图 的相关文章

随机推荐

  • 将 DataGrid 绑定到 ObservableCollection

    我有一个ObservableCollection
  • 用于调用 wso2 安全 Web 服务的独立 java 代码

    我在 wso2esb 上有一个安全的 Web 服务 它基于用户名令牌 现在 我想创建一个独立的 java 程序来调用此 Web 服务 我很难弄清楚如何做到这一点 你能帮我一下吗 感谢致敬 通过这种方式访问 安全的Web服务 我假设你使用UT
  • 如何在 MVC3 中托管 Web 服务?

    如何在 mvc3 中使用 Web 服务 我应该在哪里包含网络服务 对此完全陌生 请帮忙 In latest versions of VS you can click here 在打开的窗口中 您将能够输入服务地址并进行所需的配置 您可以将服
  • Github API 返回发布数组的空资产

    我正在尝试通过 gitHub api 跟踪 gitHub 版本的 download count 我不需要太多 我只是想看看它是什么 我正在尝试获取以下信息 http developer github com v3 repos release
  • 以正确的顺序从 Web 服务迭代 Json 数据

    我收到来自网络服务的响应 数据位于JSON form JSONObject event 15 00 type 1 status null appointment id null 16 00 type 1 status null appoin
  • 检查一个数组的所有元素是否都在另一个数组中

    我有这两个数组 A 1 2 3 4 5 6 7 8 9 0 And B 4 5 6 7 有没有办法检查 B 是否是 A 中具有相同项目顺序的子列表 issubset http docs python org 2 library stdtyp
  • 如何中止/取消 TPL 任务?

    在一个线程中 我创建了一些System Threading Task并开始每项任务 当我做一个 Abort 杀死线程 任务不会中止 我怎样才能传输 Abort 我的任务 你不能 任务使用线程池中的后台线程 另外 不建议使用 Abort 方法
  • 将函数应用于具有分组变量的多维数组

    我有一个我认为很简单的问题 但我一直无法找到合适的答案 我有一个多维数组v x y z 我想沿数组应用一个函数z使用分组变量 组 的维度 这是一个例子 在 R 中 v lt 1 81 dim v lt c 3 3 9 group lt c
  • 化学式解析器 C++

    I am currently working on a program that can parse a chemical formula and return molecular weight and percent compositio
  • 使用 SBT 构建的 scala 无法导入 java 类?

    我在使用 sbt 构建一个简单的 Scala 类时遇到了一些奇怪的问题 我从互联网上复制的代码足以启动码头服务器 object JettyEmbedded def main args Array String val server new
  • Java:枚举值()和valueOf(字符串)

    javac为什么要加上values and valueOf String 正在定义的枚举类型的方法 将它们添加到 Enum 类本身不是更好吗 我的意思是 如果我有一些枚举 例如 enum FooEnum ONE TWO javac 添加va
  • 调试模式下“运行时检查失败 #2 - 变量‘filePath’周围的堆栈已损坏”

    我在使用winsock2时遇到这个函数的问题 当程序将此函数置于调试模式时 我收到 2 条语句 仅在退出此函数期间 运行时检查失败 2 变量 filePath 周围的堆栈已损坏 运行时检查失败 2 变量 recBuf 周围的堆栈已损坏 我正
  • 4 个核心的 8 个逻辑线程并行运行速度最多可以提高 4 倍?

    我正在对软件进行基准测试 该软件在 Intel 2670QM 上的执行速度比使用全部 8 个 逻辑 线程的串行版本快 4 倍 我想要一些社区反馈我对基准测试结果的看法s 当我在 4 个核心上使用 4 个线程时 速度提高了 4 倍 整个算法是
  • 不可复制类型的复制列表初始化

    12 6 1 显式初始化 struct complex complex complex double complex double double complex sqrt complex complex complex g 1 2 cons
  • 如何用react-native做一个多页面应用程序?

    The tutorial http facebook github io react native docs tutorial html contentfor react native 向我们展示了如何通过创建一个具有以下内容的 React
  • 如何从本地文件导入环境变量到Django

    我正在准备我的第一个专业 Django 项目的生产 但我在保护应用程序的环境变量方面遇到了问题 到目前为止 我已经成功创建了一个本地文件来存储我的电脑上的所有变量 env variables py import os db user os
  • for 循环被忽略(优化?)

    我正在使用 for while 循环在我的代码中实现延迟 延迟的持续时间在这里并不重要 尽管它足够大而引人注目 这是代码片段 uint32 t i Do something useful for i 0 i lt 50000000U i D
  • Swift 中的 C 联合类型?

    如何在 Swift 中声明和使用 C 联合类型 I tried var value union var output CLongLong var input CInt 但它不起作用 更新 我想使用 union 来分割8 bytes numb
  • awscli 入门错误

    我已经在 1 月 2 日在 AWS 官方论坛上询问过这个问题 但没有任何回复 因此 我再次将其发布到此处 以便修复错误 我按照本页所述安装了 awsclihttp docs amazonwebservices com cli latest
  • 将图例添加到 Seaborn 点图

    我正在使用以下方法将多个数据帧绘制为点图seaborn 我还在绘制所有数据框在同一轴上 我如何在情节中添加图例 我的代码获取每个数据帧并将其一个又一个地绘制在同一个图上 每个数据框都有相同的列 date count 2017 01 01 3