在 Matplotlib 中选择标记大小

2024-05-27

我正在 matplotlib 中用方形标记绘制散点图,如下所示:

small_marker.

我想实现这样的目标:

这意味着我必须调整标记大小和图形大小/比例,以使标记之间没有空白。每个索引单元还应该有一个标记(x and y都是整数)所以如果y从 60 到 100,应该有 40 个标记y方向。目前我正在手动调整它。您知道实现此目标的最佳方法是什么吗?


我找到了两种方法来解决这个问题:

第一个是基于这个答案 https://stackoverflow.com/questions/13662525/how-to-get-pixel-coordinates-for-matplotlib-generated-scatterplot/13662938#13662938。基本上,您确定相邻数据点之间的像素数并使用它来设置标记大小。标记尺寸为scatter以面积形式给出。

fig = plt.figure()
ax = fig.add_subplot(111, aspect='equal')

# initialize a plot to determine the distance between the data points in pixel:    
x = [1, 2, 3, 4, 2, 3, 3]
y = [0, 0, 0, 0, 1, 1, 2]
s = 0.0
points = ax.scatter(x,y,s=s,marker='s')
ax.axis([min(x)-1., max(x)+1., min(y)-1., max(y)+1.])

# retrieve the pixel information:
xy_pixels = ax.transData.transform(np.vstack([x,y]).T)
xpix, ypix = xy_pixels.T

# In matplotlib, 0,0 is the lower left corner, whereas it's usually the upper 
# right for most image software, so we'll flip the y-coords
width, height = fig.canvas.get_width_height()
ypix = height - ypix

# this assumes that your data-points are equally spaced
s1 = xpix[1]-xpix[0]

points = ax.scatter(x,y,s=s1**2.,marker='s',edgecolors='none')
ax.axis([min(x)-1., max(x)+1., min(y)-1., max(y)+1.])

fig.savefig('test.png', dpi=fig.dpi)

第一种方法的缺点是符号重叠。我无法找到该方法的缺陷。我可以手动调整s1 to

s1 = xpix[1]-xpix[0] - 13. 

给出更好的结果,但我无法确定背后的逻辑13..

因此,第二种方法基于这个答案 https://stackoverflow.com/questions/9081553/python-scatter-plot-size-and-style-of-the-marker。在这里,在图上绘制各个方块并相应调整大小。从某种程度上来说,它是一个manual散点图(使用循环来构建图形),因此根据数据集,可能需要一段时间。

这种方法使用patches代替scatter,所以一定要包括

from matplotlib.patches import Rectangle  

同样,使用相同的数据点:

x = [1, 2, 3, 4, 2, 3, 3]
y = [0, 0, 0, 0, 1, 1, 2]
z = ['b', 'g', 'r', 'c', 'm', 'y', 'k'] # in your case, this is data
dx = [x[1]-x[0]]*len(x)   # assuming equally spaced data-points

# you can use the colormap like this in your case:
# cmap = plt.cm.hot 

fig = plt.figure()
ax = fig.add_subplot(111, aspect='equal')
ax.axis([min(x)-1., max(x)+1., min(y)-1., max(y)+1.])

for x, y, c, h in zip(x, y, z, dx):
    ax.add_artist(Rectangle(xy=(x-h/2., y-h/2.), 
                  color=c,             # or, in your case: color=cmap(c)                  
                  width=h, height=h))  # Gives a square of area h*h

fig.savefig('test.png')

一条评论Rectangle:坐标是左下角,因此x-h/2.
这种方法给出了连接的矩形。如果我仔细观察这里的输出,它们似乎仍然重叠一个像素——同样,我不确定这是否有帮助。

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

在 Matplotlib 中选择标记大小 的相关文章

  • SQLAlchemy 通过关联对象声明式多对多自连接

    我有一个用户表和一个朋友表 它将用户映射到其他用户 因为每个用户可以有很多朋友 这个关系显然是对称的 如果用户A是用户B的朋友 那么用户B也是用户A的朋友 我只存储这个关系一次 除了两个用户 ID 之外 Friends 表还有其他字段 因此
  • Python(Selenium):如何通过登录重定向/组织登录登录网站

    我不是专业程序员 所以请原谅任何愚蠢的错误 我正在做一些研究 我正在尝试使用 Selenium 登录数据库来搜索大约 1000 个术语 我有两个问题 1 重定向到组织登录页面后如何使用 Selenium 登录 2 如何检索数据库 在我解决
  • 使用 matplotlib 绘制时间序列数据并仅在年初显示年份

    rcParams date autoformatter month b n Y 我正在使用 matpltolib 来绘制时间序列 如果我按上述方式设置 rcParams 则生成的图会在每个刻度处标记月份名称和年份 我怎样才能将其设置为仅在每
  • Python - StatsModels、OLS 置信区间

    在 Statsmodels 中 我可以使用以下方法拟合我的模型 import statsmodels api as sm X np array 22000 13400 47600 7400 12000 32000 28000 31000 6
  • 如何使用Conda下载python包并随后离线安装?

    我知道通过 pip 我可以使用以下命令下载 Python 包 但 pip install 破坏了我的内部包依赖关系 当我做 pip download
  • 如何在 Python 中检索 for 循环中的剩余项目?

    我有一个简单的 for 循环迭代项目列表 在某些时候 我知道它会破裂 我该如何退回剩余的物品 for i in a b c d e f g try some func i except return remaining items if s
  • 如何替换 pandas 数据框列中的重音符号

    我有一个数据框dataSwiss其中包含瑞士城市的信息 我想用普通字母替换带有重音符号的字母 这就是我正在做的 dataSwiss Municipality dataSwiss Municipality str encode utf 8 d
  • 测试 python Counter 是否包含在另一个 Counter 中

    如何测试是否是pythonCounter https docs python org 2 library collections html collections Counter is 包含在另一个中使用以下定义 柜台a包含在计数器中b当且
  • Python pickle:腌制对象不等于源对象

    我认为这是预期的行为 但想检查一下 也许找出原因 因为我所做的研究结果是空白 我有一个函数可以提取数据 创建自定义类的新实例 然后将其附加到列表中 该类仅包含变量 然后 我使用协议 2 作为二进制文件将该列表腌制到文件中 稍后我重新运行脚本
  • Python 函数可以从作用域之外赋予新属性吗?

    我不知道你可以这样做 def tom print tom s locals locals def dick z print z name z name z guest Harry print z guest z guest print di
  • 如何使用 OpencV 从 Firebase 读取图像?

    有没有使用 OpenCV 从 Firebase 读取图像的想法 或者我必须先下载图片 然后从本地文件夹执行 cv imread 功能 有什么办法我可以使用cv imread link of picture from firebase 您可以
  • 如何使用Python创建历史时间线

    So I ve seen a few answers on here that helped a bit but my dataset is larger than the ones that have been answered prev
  • Pandas:merge_asof() 对多行求和/不重复

    我正在处理两个数据集 每个数据集具有不同的关联日期 我想合并它们 但因为日期不完全匹配 我相信merge asof 是最好的方法 然而 有两件事发生merge asof 不理想的 数字重复 数字丢失 以下代码是一个示例 df a pd Da
  • 如何在Python中对类别进行加权随机抽样

    给定一个元组列表 其中每个元组都包含一个概率和一个项目 我想根据其概率对项目进行采样 例如 给出列表 3 a 4 b 3 c 我想在 40 的时间内对 b 进行采样 在 python 中执行此操作的规范方法是什么 我查看了 random 模
  • Fabric env.roledefs 未按预期运行

    On the 面料网站 http docs fabfile org en 1 10 usage execution html 给出这个例子 from fabric api import env env roledefs web hosts
  • 为字典中的一个键附加多个值[重复]

    这个问题在这里已经有答案了 我是 python 新手 我有每年的年份和值列表 我想要做的是检查字典中是否已存在该年份 如果存在 则将该值附加到特定键的值列表中 例如 我有一个年份列表 并且每年都有一个值 2010 2 2009 4 1989
  • 绘制与Fig.show()内联的IPython Notebook图形?

    我正在使用 IPython Notebook 调用内联模式 pylab inline 以下代码立即在单元格处绘制一个图形 fig plt figure axes fig add axes 0 0 1 1 不过 我想在一个单元格中创建绘图 轴
  • 在 Qt 中自动调整标签文本大小 - 奇怪的行为

    在 Qt 中 我有一个复合小部件 它由排列在 QBoxLayouts 内的多个 QLabels 组成 当小部件调整大小时 我希望标签文本缩放以填充标签区域 并且我已经在 resizeEvent 中实现了文本大小的调整 这可行 但似乎发生了某
  • Python Selenium:如何在文本文件中打印网站上的值?

    我正在尝试编写一个脚本 该脚本将从 tulsaspca org 网站获取以下 6 个值并将其打印在 txt 文件中 最终输出应该是 905 4896 7105 23194 1004 42000 放置的动物 的 HTML span class
  • 如何将输入读取为数字?

    这个问题的答案是社区努力 help privileges edit community wiki 编辑现有答案以改进这篇文章 目前不接受新的答案或互动 Why are x and y下面的代码中使用字符串而不是整数 注意 在Python 2

随机推荐

  • 敏捷开发;在线免费工具! [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我们一直在寻求在地理上分散的开发团队中实施敏捷方法 因此我需要有关您使用过并认为有用的任何免费在线应用程序的建议 现在我们使用纸卡和墙来管
  • 当您使用 .html() 删除元素时,jQuery 中的事件侦听器是否会自动删除?

    在 jQuery 中如果我们使用 remove 如果要删除某些元素 则与该元素关联的所有绑定事件和 jQuery 数据都将被删除 但是如果我们用以下命令 删除 元素会发生什么 html 我们是否需要在更改任何 html 之前取消绑定所有元素
  • 运行使用 XCode 7 部署的应用程序会崩溃

    我在 xcode 6 中开发应用程序 然后设备连接 我通过调试运行应用程序 在我可以断开设备与 Xcode 的连接并再次运行应用程序后 它正在运行 但今天开始出现一些问题 我使用 xcode 7 中的运行按钮运行应用程序 gt 应用程序正常
  • 用 unicode 字符删除纯文本?

    是否可以删除代码注释中不需要的修改过的单词 由于开发人员仍然在黑暗时代更简单的纯文本时代进行编码 其中文本无法使用隐藏标识符进行格式化 因此实现这一目标的唯一方法是使用 Unicode 字符 由于某些unicode字符可以扩展 y o n
  • Xcode 8 提交时“应用程序签名中缺少 aps 环境权利”

    我有一个应用程序 我们在过去 6 个月内提交了数十个版本 并且我们确实使用 APNS 升级到 Xcode 8 后 我收到了来自 Apple 的以下电子邮件 亲爱的开发者 我们发现您最近的交货存在一个或多个问题 应用程序名称 您的交货是 成功
  • 带有可选第一个哈希参数和keyword_args的奇怪方法行为

    我有以下方法 def test first param nil keyword arg nil puts first param first param puts keyword arg keyword arg end 以下所有调用都按照我
  • go json marshal 的默认大小写选项?

    我有以下结构要导出为 json type ExportedIncident struct Title string json title Host string json host Status string json status Dat
  • 如何将自定义表情符号(小图片)插入到React Native的Textinput中?

    我正在构建一个 BBS 应用程序 用户可以在发布或回复文章时将自定义表情符号 使用我创建的自定义键盘 插入到 Textinput 中 例如 我有一张笑脸图片 它将映射到类似 custom smile code 的代码 当用户在Textinp
  • Spark-shell 使用不同版本的 Scala。使用 homebrew 安装 scala 和 apache-spark

    我使用 homebrew 安装了 scala 和 apache spark 它安装了 scala 2 12 4 和 apache spark 2 2 0 但是 如果您结帐spark shell version它使用不同的 scala 版本
  • 如何在HTTP post中向PHP服务器发送多个参数

    我正在将 base64 字符串发送到 php 服务器 并且运行良好 现在我想以字符串形式发送另一个参数 谁能告诉我下面的代码中需要添加什么代码 下面的代码适用于单个参数 我们如何修改它的多个参数 NSData data UIImageJPE
  • Visual Studio 2010 (C++):暂时抑制 C4706 警告

    当您在 Visual Studio 2010 中编译以下 C 源文件并启用警告级别 W4 时 include
  • 没有 ssl 的 Web 加密 API

    我编写了一个用于安全消息传输的小网络应用程序 以了解有关加密的更多信息 并想向我的朋友展示它并让他们玩一下 所以我将它托管在我的小服务器上 并惊讶地发现 Web Crypto API 我竭尽全力开始工作 因为它的错误消息不是很具体 需要 S
  • 帮助将二进制图像数据从 SQL Server 读取到 PHP 中

    我似乎无法找到将二进制数据从 SQL 服务器读取到 PHP 的方法 我正在开发一个项目 需要能够将图像直接存储在 SQL 表中 而不是文件系统上 目前 我一直在使用这样的查询 插入 myTable 文档 选择 从 OPENROWSET BU
  • 文件夹对象的文件大小信息

    对于Folder对象 它列出了该文件夹 item collection 下的文件 以及文件名和文件ID 包含文件大小会很有帮助 因为目前需要查询每个文件才能获取大小 Thanks 感谢您的反馈 我们收到了很多过滤 GET folders 调
  • 如何在Python中拟合阶跃函数

    我有一个关于使用 curve fit 等 scipy 例程拟合阶跃函数的问题 我很难将其矢量化 例如 import numpy as np from scipy optimize import curve fit import matplo
  • ElementNotVisibleException:消息:元素在 Robot Framework 中不可交互

    示例代码 div class modal footer div
  • 在TestCafé测试中注入的injectScripts中的脚本在哪里?

    我正在以编程方式设置 TestCaf 测试 并且使用injectScripts配置上Runner类来注入函数 根据文档 这些脚本被添加到测试页面的标题中 是否可以从测试本身调用函数 我还没有找到办法做到这一点 我可以看到脚本映射在测试中是可
  • Fragment 内的 FragmentPagerAdapter

    我在实现基于多个 ViewPager 的设计时遇到了一些麻烦 在较高的层次上 我有一个 FragmentActivity 其中只有一个 FrameLayout 作为其内容 我有 3 个不同的片段想要显示 所有 3 个均为全屏 一次仅使用 1
  • Three.js获取立方体的4个角坐标?

    如何获得立方体四个角的坐标 如果您使用 CubeGeometry 宽度 高度 深度 并将立方体放置在某处 那么您的八个角位于 position x width 2 position y height 2 position z depth 2
  • 在 Matplotlib 中选择标记大小

    我正在 matplotlib 中用方形标记绘制散点图 如下所示 我想实现这样的目标 这意味着我必须调整标记大小和图形大小 比例 以使标记之间没有空白 每个索引单元还应该有一个标记 x and y都是整数 所以如果y从 60 到 100 应该