草庐IT

关于python:seaborn的swarmplot可以调整点的marker形状吗?

codeneng 2023-03-28 原文

Can the swarmplot of seaborn adjust the marker shape of points?

  • 我使用 seaborn 中的 swarmplot 函数来绘制类别散点图。但我在每个类别中有两种类型的点。所以我希望可以将不同类型的点设置为不同的标记。
    seaborn的swarmplot可以调整点的标记形状吗?或者我可以使用其他工具

  • 我只发现swarmplot的文档中可以调整参数标记的大小。我尝试使用色调。但是当我使用色调时,所有类别都代表相同的颜色。那不是我的主意。

  • 3.

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    # plot the manhattan map
    snsplt =sns.swarmplot(x=scale,y=distance,marker='o')
    plt.tick_params(labelsize=12)
    # plot the significant line


    bin = np.arange(-0.2,5.2,0.2)
    y = np.full((len(bin),),distance[p_minsignIndex])
    snsplt = sns.lineplot(x=bin,y=y)
    plt.show()

    图片是我的草稿。

    我希望线条上方的圆圈是实心圆圈,而线条下方的圆圈是空心圆圈。

    • 在群图的每个圆圈内放一个 x 或其他东西怎么样?
    • 你能检查你上面的代码吗.. sns.swamplot 调用中似乎缺少一些东西..
    • 群图的一个众所周知的问题是,点在图中出现的位置以及图的一般结构取决于圆圈的大小(因为这决定了它们的打包方式)。这个问题对于非圆形形状来说要困难得多,而且基本上没有人因此使用非圆形形状。很容易找到所有圆圈的位置,然后替换形状,但看起来很奇怪。所以你需要在这里指定你想要的。也许用手画一幅画,让我们相信你真的想要你所要求的。
    • 谢谢你的建议。我已经更新了代码和我的草稿图像。


    鉴于您展示的情节,您似乎有两个类别同时发生:
    1) 沿轴的位置表示一个类别——我称之为cat1;和,
    2) 每个类别中的变化,这就是您希望通过标记显示的内容——我称之为 cat2.

    到目前为止,将这两个类别一起显示的最简单方法是使用 seaborn 提供的工具来执行此操作。具体来说,在您的绘图中,您以两种不同的方式识别 cat1:首先通过其沿 x 轴的位置,其次通过颜色。所以想法是使用 cat1 的位置和 cat2 的颜色。此外,您在下面的评论中提到您想使用标记来显示统计显着性,所以我选择了一个做得很好的调色板。这是从 seaborn 文档中获取的示例,但经过修改以显示显着性阈值(根据您的要求):

    1
    2
    3
    4
    5
    import seaborn as sns
    import numpy as np

    tips['bigness'] = np.where(tips['total_bill']>15, 'big', 'small')
    sns.swarmplot(x="day", y="total_bill", hue="bigness", data=tips, palette="Paired", hue_order=["small","big"])

    • @StevenHill:这是海生群体图的简单内置方法。这是一个很好的方法。如果,在查看它时,你有一个令人信服的理由来绘制圆形轮廓,我很想听听它。对我来说似乎更难阅读——只是每个圆圈中心的一个小点不同?看起来颜色更清晰,即使是灰度。更改形状或圆形轮廓并不是特别困难,但要找到枚举并更改圆形需要一些努力。
    • 感谢您的聆听和您的回答。线上方的点具有统计显着性。我试图通过要点是否可靠来强调要点的重要性。此外,知道这些技巧对我来说很有趣。但你是对的,这种显示方式的效果可能不会更好。
    • @StevenHill:我已经改变了情节的颜色以反映"重要性",方法是使用浅色去强调,并利用 seaborn 有一个名为"配对"的调色板这一事实。 (虽然在 seaborn 中比 matplotlib 更难,但可以直接编辑每个符号,但如果可以避免的话,它会更容易更好——用于重复使用和共享等。另外,我觉得这看起来不错。)
    • @StevenHill:为了满足您对如何编辑标记的好奇心,这里有一个来自 SO 的示例。但请注意,除非您已经看过最初的群体图,否则确定位置的先验并不明显(例如,正方形重叠,三角形有很多空间等),总体而言,这些很难读。另外,如果您是 seaborn/matplotlib 的新手,同样值得注意的是,这种类型的事情(编辑个别艺术家)在 seaborn 中比 matplotlib 更难。

    有关关于python:seaborn的swarmplot可以调整点的marker形状吗?的更多相关文章

    1. ruby - 为什么我可以在 Ruby 中使用 Object#send 访问私有(private)/ protected 方法? - 2

      类classAprivatedeffooputs:fooendpublicdefbarputs:barendprivatedefzimputs:zimendprotecteddefdibputs:dibendendA的实例a=A.new测试a.foorescueputs:faila.barrescueputs:faila.zimrescueputs:faila.dibrescueputs:faila.gazrescueputs:fail测试输出failbarfailfailfail.发送测试[:foo,:bar,:zim,:dib,:gaz].each{|m|a.send(m)resc

    2. python - 如何使用 Ruby 或 Python 创建一系列高音调和低音调的蜂鸣声? - 2

      关闭。这个问题是opinion-based.它目前不接受答案。想要改进这个问题?更新问题,以便editingthispost可以用事实和引用来回答它.关闭4年前。Improvethisquestion我想在固定时间创建一系列低音和高音调的哔哔声。例如:在150毫秒时发出高音调的蜂鸣声在151毫秒时发出低音调的蜂鸣声200毫秒时发出低音调的蜂鸣声250毫秒的高音调蜂鸣声有没有办法在Ruby或Python中做到这一点?我真的不在乎输出编码是什么(.wav、.mp3、.ogg等等),但我确实想创建一个输出文件。

    3. ruby - 使用 Vim Rails,您可以创建一个新的迁移文件并一次性打开它吗? - 2

      使用带有Rails插件的vim,您可以创建一个迁移文件,然后一次性打开该文件吗?textmate也可以这样吗? 最佳答案 你可以使用rails.vim然后做类似的事情::Rgeneratemigratonadd_foo_to_bar插件将打开迁移生成的文件,这正是您想要的。我不能代表textmate。 关于ruby-使用VimRails,您可以创建一个新的迁移文件并一次性打开它吗?,我们在StackOverflow上找到一个类似的问题: https://sta

    4. ruby - 我可以使用 Ruby 从 CSV 中删除列吗? - 2

      查看Ruby的CSV库的文档,我非常确定这是可能且简单的。我只需要使用Ruby删除CSV文件的前三列,但我没有成功运行它。 最佳答案 csv_table=CSV.read(file_path_in,:headers=>true)csv_table.delete("header_name")csv_table.to_csv#=>ThenewCSVinstringformat检查CSV::Table文档:http://ruby-doc.org/stdlib-1.9.2/libdoc/csv/rdoc/CSV/Table.html

    5. ruby - 我可以使用 aws-sdk-ruby 在 AWS S3 上使用事务性文件删除/上传吗? - 2

      我发现ActiveRecord::Base.transaction在复杂方法中非常有效。我想知道是否可以在如下事务中从AWSS3上传/删除文件:S3Object.transactiondo#writeintofiles#raiseanexceptionend引发异常后,每个操作都应在S3上回滚。S3Object这可能吗?? 最佳答案 虽然S3API具有批量删除功能,但它不支持事务,因为每个删除操作都可以独立于其他操作成功/失败。该API不提供任何批量上传功能(通过PUT或POST),因此每个上传操作都是通过一个独立的API调用完成的

    6. ruby - 有人可以帮助解释类创建的 post_initialize 回调吗 (Sandi Metz) - 2

      我正在阅读SandiMetz的POODR,并且遇到了一个我不太了解的编码原则。这是代码:classBicycleattr_reader:size,:chain,:tire_sizedefinitialize(args={})@size=args[:size]||1@chain=args[:chain]||2@tire_size=args[:tire_size]||3post_initialize(args)endendclassMountainBike此代码将为其各自的属性输出1,2,3,4,5。我不明白的是查找方法。当一辆山地自行车被实例化时,因为它没有自己的initialize方法

    7. ruby - 是否可以覆盖 gemfile 进行本地开发? - 2

      我们的git存储库中目前有一个Gemfile。但是,有一个gem我只在我的环境中本地使用(我的团队不使用它)。为了使用它,我必须将它添加到我们的Gemfile中,但每次我checkout到我们的master/dev主分支时,由于与跟踪的gemfile冲突,我必须删除它。我想要的是类似Gemfile.local的东西,它将继承从Gemfile导入的gems,但也允许在那里导入新的gems以供使用只有我的机器。此文件将在.gitignore中被忽略。这可能吗? 最佳答案 设置BUNDLE_GEMFILE环境变量:BUNDLE_GEMFI

    8. ruby - 我可以将我的 README.textile 以正确的格式放入我的 RDoc 中吗? - 2

      我喜欢使用Textile或Markdown为我的项目编写自述文件,但是当我生成RDoc时,自述文件被解释为RDoc并且看起来非常糟糕。有没有办法让RDoc通过RedCloth或BlueCloth而不是它自己的格式化程序运行文件?它可以配置为自动检测文件后缀的格式吗?(例如README.textile通过RedCloth运行,但README.mdown通过BlueCloth运行) 最佳答案 使用YARD直接代替RDoc将允许您包含Textile或Markdown文件,只要它们的文件后缀是合理的。我经常使用类似于以下Rake任务的东西:

    9. ruby - 一个 YAML 对象可以引用另一个吗? - 2

      我想让一个yaml对象引用另一个,如下所示:intro:"Hello,dearuser."registration:$introThanksforregistering!new_message:$introYouhaveanewmessage!上面的语法只是它如何工作的一个例子(这也是它在thiscpanmodule中的工作方式。)我正在使用标准的ruby​​yaml解析器。这可能吗? 最佳答案 一些yaml对象确实引用了其他对象:irb>require'yaml'#=>trueirb>str="hello"#=>"hello"ir

    10. ruby - 可以通过多少种方法将方法添加到 ruby​​ 对象? - 2

      当谈到运行时自省(introspection)和动态代码生成时,我认为ruby​​没有任何竞争对手,可能除了一些lisp方言。前几天,我正在做一些代码练习来探索ruby​​的动态功能,我开始想知道如何向现有对象添加方法。以下是我能想到的3种方法:obj=Object.new#addamethoddirectlydefobj.new_method...end#addamethodindirectlywiththesingletonclassclass这只是冰山一角,因为我还没有探索instance_eval、module_eval和define_method的各种组合。是否有在线/离线资

    随机推荐