gpt4 book ai didi

python - Pyqtgraph 强制轴标签具有小数点

转载 作者:太空宇宙 更新时间:2023-11-03 14:27:54 24 4
gpt4 key购买 nike

我试图让我的轴标签都带有小数点,即使它们恰好是整数。参见下图。

enter image description here

您会注意到,在 x 轴上,只要值为整数,它就不再显示小数。我希望“1”读取“1.0”。

我有一个方法可以设置我的绘图风格。它读起来像这样

绘图样式1

def set_plotstyle(p1, style):
if style == 1:
axlabel_font = QtGui.QFont()
axlabel_font.setPixelSize(20)

p1.showAxis('right')
p1.showAxis('top')

p1.showLabel('right', show=False)
p1.showLabel('top', show=False)

p1.showGrid(x=False, y=False)
p1.setLogMode(x=False, y=False)
p1.getAxis('left').tickFont = axlabel_font
p1.getAxis('bottom').tickFont = axlabel_font
p1.getAxis('left').labelFont = axlabel_font
p1.getAxis('bottom').setHeight(70)
p1.getAxis('left').setWidth(100)
p1.getAxis('right').setWidth(60)
p1.getAxis('left').setStyle(tickTextOffset=15)
p1.getAxis('bottom').setStyle(tickTextOffset=15)
p1.getAxis('top').setStyle(showValues=False)
p1.getAxis('right').setStyle(showValues=False)

如果可能的话,我想在这个方法中设置这个功能。谢谢!

最佳答案

请查找下面的示例代码,该代码显示带有单个小数位的 x 和 y 值。我修改了 set_plotstyle 方法,以便它也接受正在绘制的 x 和 y 值。这并不完全是您所要求的,但我希望它有所帮助。

x 和 y 值将转换为格式化字符串,并使用 setTicks 分配给刻度值。一位小数的字符串格式命令是 .1f。这个想法和示例代码基于这个 stackoverflow 答案:

PyQtGraph - How to set intervals of axis

我减小了 set_plotstyle 方法中的字体大小,以便值在图中不会重叠。

这是使用 Jupyter 笔记本在 Linux Mint 下使用 Python 3.6 进行测试的。如果您还使用 Jupyter 笔记本,请使用 %gui 内联魔法来显示绘图。

import pyqtgraph as pg
import numpy as np
from pyqtgraph.Qt import QtCore, QtGui

def set_plotstyle(p1, x_vals, y_vals, style):
if style == 1:
axlabel_font = QtGui.QFont()
axlabel_font.setPixelSize(15)

p1.showAxis('right')
p1.showAxis('top')

p1.showLabel('right', show=False)
p1.showLabel('top', show=False)

p1.showGrid(x=False, y=False)
p1.setLogMode(x=False, y=False)
p1.getAxis('left').tickFont = axlabel_font
p1.getAxis('bottom').tickFont = axlabel_font
p1.getAxis('left').labelFont = axlabel_font
p1.getAxis('bottom').setHeight(70)
p1.getAxis('left').setWidth(100)
p1.getAxis('right').setWidth(60)
p1.getAxis('left').setStyle(tickTextOffset=15)
p1.getAxis('bottom').setStyle(tickTextOffset=15)
p1.getAxis('top').setStyle(showValues=False)
p1.getAxis('right').setStyle(showValues=False)

ax = p1.getAxis('bottom')
dx = [(value, '{:.1f}'.format(value)) for value in x_vals]
ax.setTicks([dx, []])

ay = p1.getAxis('left')
dy = [(value, '{:.1f}'.format(value)) for value in y_vals]
ay.setTicks([dy, []])
return p1

app = pg.mkQApp()

pw = pg.PlotWidget(title="Example")
x = np.arange(7)
y = x**2/150
pw.plot(x=x, y=y, symbol='o')
pw.show()
pw.setWindowTitle('Example')
set_plotstyle(pw, x, y, 1)


if __name__ == '__main__':
import sys

if (sys.flags.interactive != 1) or not hasattr(QtCore, 'PYQT_VERSION'):
QtGui.QApplication.instance().exec_()

关于python - Pyqtgraph 强制轴标签具有小数点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47500216/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com