我正在使用Matplolib中的自定义工具栏. 为了让它起作用,我必须设置plot.rcParams['toolbar'] = 'toolmanager' 这有增加鼠标坐标字体大小的副作用.

问题与MPL_SISTTER_Density一起出现.这些绘图为鼠标坐标框中的密度值添加了额外的一行.坐标如下所示:

x=2.3535 y=4.565
[2.56] <--- extra row with density value

由于坐标仅在鼠标位于绘图限制范围内时显示,因此当鼠标移入和移出绘图时,额外的行会增加工具栏高度,并导致整个窗口不规律地调整大小,这非常恼人.

使用的代码:(但没有太大而无法粘贴到此处的自定义工具栏):

import matplotlib.pyplot as plot
import mpl_scatter_density # adds projection='scatter_density'
from matplotlib.colors import LinearSegmentedColormap
import numpy as np

# "Viridis-like" colormap with white background
white_viridis = LinearSegmentedColormap.from_list('white_viridis', [
    (0, '#ffffff'),
    (1e-20, '#440053'),
    (0.2, '#404388'),
    (0.4, '#2a788e'),
    (0.6, '#21a784'),
    (0.8, '#78d151'),
    (1, '#fde624'),
], N=256)


# Fake data for testing
x = np.random.normal(size=100000)
y = x * 3 + np.random.normal(size=100000)

fig = plot.figure()
ax = fig.add_subplot(1, 1, 1, projection='scatter_density')
density = ax.scatter_density(x, y, cmap=white_viridis)
fig.colorbar(density, label='Number of points per pixel')

plot.show()

我的 idea 是要么将字体大小设置为plot.rcParams['font.size'](这在VScode调试器中手动设置时效果很好,但在正常执行脚本时由于某种原因不起作用!),要么完全删除密度值.

但是,值为ax.format_coord仅修改第一行鼠标坐标的格式.我似乎找不到如何修改密度值格式.

推荐答案

format_coord仅格式化x和y表示.要设置数据表示的格式,请使用format_cursor_data:

enter image description here

import matplotlib.pyplot as plot
import mpl_scatter_density  # adds projection='scatter_density'
import numpy as np

# Fake data for testing
x = np.random.normal(size=100000)
y = x * 3 + np.random.normal(size=100000)

fig = plot.figure()
ax = fig.add_subplot(1, 1, 1, projection="scatter_density")
density = ax.scatter_density(x, y)

# replace existing data representation with empty one
density.format_cursor_data = lambda _: ""

fig.colorbar(density, label="Number of points per pixel")

plot.show()

Python相关问答推荐

当变量也可以是无或真时,判断是否为假

Python在通过Inbox调用时给出不同的响应

如何在Pygame中绘制右对齐的文本?

如何在Python中按组应用简单的线性回归?

如何获取Django REST框架中序列化器内部的外卡属性?

Polars -转换为PL后无法计算熵.列表

过滤绕轴旋转的螺旋桨

从包含数字和单词的文件中读取和获取数据集

跟踪我已从数组中 Select 的样本的最有效方法

我从带有langchain的mongoDB中的vector serch获得一个空数组

删除所有列值,但判断是否存在任何二元组

Excel图表-使用openpyxl更改水平轴与Y轴相交的位置(Python)

如何在类和classy-fastapi -fastapi- followup中使用FastAPI创建路由

加速Python循环

ThreadPoolExecutor和单个线程的超时

创建可序列化数据模型的最佳方法

在嵌套span下的span中擦除信息

与命令行相比,相同的Python代码在Companyter Notebook中运行速度慢20倍

搜索按钮不工作,Python tkinter

pandas fill和bfill基于另一列中的条件