+
Skip to content

2D Histogram issues #655

@Corpitou

Description

@Corpitou

Hello,

I just want to make a simple 2D histogram via the "Operations -> Compute -> 2D histogram". However, I cannot do this with any type of dataset, even the simplest.

This actually works for version 3.4.0.1 but not with the latest version 3.6.2 (with any dataset). I try it on two different computer (iMac M1 and MacBook Pro M1PRO) and I have the same issue.

I tried to send a report bug from the Veusz app but it says that it is impossible because it failed to connect to error servor (Nevertheless, internet is correctly plugged..).

If I can do anything or if you need more informations, please tell me.

Find below the report generate by Veusz :

Veusz version: 3.6.2
Python version: 3.11.1 (v3.11.1:a7a450f84a, Dec 6 2022, 15:24:06) [Clang 13.0.0 (clang-1300.0.29.30)]
Python platform: darwin
Numpy version: 1.24.2
Qt version: 5.15.8
PyQt version: 5.15.8
sip version: 6.7.6
Date: Thu, 06 Apr 2023 15:18:43 +0000

Traceback (most recent call last):
File "veusz/windows/plotwindow.py", line 1088, in checkPlotUpdate
File "veusz/document/doc.py", line 369, in paintTo
File "veusz/widgets/root.py", line 144, in draw
File "veusz/widgets/page.py", line 336, in draw
File "veusz/widgets/page.py", line 271, in findAxisRanges
File "veusz/widgets/page.py", line 258, in processDepends
File "veusz/widgets/page.py", line 229, in processWidgetDeps
File "veusz/widgets/page.py", line 217, in _updateRangeFromPlotter
File "veusz/widgets/surface3d.py", line 117, in getRange
File "veusz/datasets/twod.py", line 138, in getDataRanges
File "veusz/datasets/twod.py", line 81, in getPixelEdges
File "veusz/datasets/plugin.py", line 145, in
File "veusz/datasets/plugin.py", line 33, in getPluginData
File "veusz/plugins/datasetplugin.py", line 464, in update
File "veusz/plugins/datasetplugin.py", line 1969, in updateDatasets
File "<array_function internals>", line 198, in histogram2d
TypeError: histogram2d() got an unexpected keyword argument 'normed'

Frame checkPlotUpdate (File veusz/windows/plotwindow.py, line 1092)
self = <veusz.windows.plotwindow.PlotWindow object at 0x11f82f520>
self.AdjustIgnored = 0
self.AdjustToContents = 2
self.AdjustToContentsOnFirstShow = 1
self.AnchorUnderMouse = 2
self.AnchorViewCenter = 1
self.BoundingRectViewportUpdate = 4
self.Box = 1
self.CacheBackground = 1
self.CacheNone = 0
self.DontAdjustForAntialiasing = 4
self.DontClipPainter = 1
self.DontSavePainterState = 2
self.DrawChildren = 2
self.DrawWindowBackground = 1
self.FullViewportUpdate = 0
self.HLine = 4
self.IgnoreMask = 4
self.MinimalViewportUpdate = 1
self.NoAnchor = 0
self.NoDrag = 0
self.NoFrame = 0
self.NoViewportUpdate = 3
self.Panel = 2
self.PdmDepth = 6
self.PdmDevicePixelRatio = 11
self.PdmDevicePixelRatioScaled = 12
self.PdmDpiX = 7
self.PdmDpiY = 8
self.PdmHeight = 2
self.PdmHeightMM = 4
self.PdmNumColors = 5
self.PdmPhysicalDpiX = 9
self.PdmPhysicalDpiY = 10
self.PdmWidth = 1
self.PdmWidthMM = 3
self.Plain = 16
self.Raised = 32
self.RubberBandDrag = 2
self.ScrollHandDrag = 1
self.Shadow_Mask = 240
self.Shape_Mask = 15
self.SmartViewportUpdate = 2
self.StyledPanel = 6
self.Sunken = 48
self.VLine = 5
self.WinPanel = 3
self.dict = {'scene': <PyQt5.QtWidgets.QGraphicsScene object at 0x11f82f640>, 'dpi': (72, 72), 'pixmapitem': <PyQt5.QtWidgets.QGraph...
self.doc = 'Class to show the plot(s) in a scrollable window.'
self.module = 'veusz.windows.plotwindow'
self.antialias = True
self.clickmode = 'select'
self.controlgraphroot = <veusz.windows.plotwindow.ControlGraphRoot object at 0x11f82f760>
self.currentclickmode = None
self.docchangeset = 2
self.document = <veusz.document.doc.Document object at 0x11f73dcf0>
self.dpi = (72, 72)
self.grabpos = None
self.ignoreclick = False
self.interval = -1
self.isfullscreen = False
self.lastwidgetsselected = [<veusz.widgets.root.Root object at 0x12614b2d0>]
self.oldpagenumber = 0
self.oldzoom = 1.0
self.pagenumber = 0
self.painthelper = <veusz.document.painthelper.PaintHelper object at 0x110061a90>
self.pickerinfo = <veusz.widgets.pickable.PickInfo object at 0x11f7dd850>
self.pickeritem = <veusz.windows.plotwindow.PickerCrosshairItem object at 0x11f82f880>
self.pickerwidgets = []
self.pixmapitem = <PyQt5.QtWidgets.QGraphicsPixmapItem object at 0x11f82f5b0>
self.rendercontrol = <veusz.windows.plotwindow.RenderControl object at 0x11f82f9a0>
self.scene = <PyQt5.QtWidgets.QGraphicsScene object at 0x11f82f640>
self.scrolltimer = <PyQt5.QtCore.QTimer object at 0x11f82fb50>
self.selectactiongrp = <PyQt5.QtWidgets.QActionGroup object at 0x11f821000>
self.staticMetaObject = <PyQt5.QtCore.QMetaObject object at 0x129da5000>
self.sumwheeldelta = 0
self.timer = <PyQt5.QtCore.QTimer object at 0x11f82fac0>
self.updateintervals = ((0, 'Disable'), (-1, 'On document change'), (100, 'Every 0.1s'), (250, 'Every 0.25s'), (500, 'Every 0.5s'), (1000, 'Eve...
self.viewtoolbar = <PyQt5.QtWidgets.QToolBar object at 0x11f82e200>
self.vzactions = {'file.new.menu': <PyQt5.QtWidgets.QAction object at 0x11f8839a0>, 'file.new.graph': <PyQt5.QtWidgets.QAction object at ...
self.zoomfactor = 1.0
self.zoomrect = <PyQt5.QtWidgets.QGraphicsRectItem object at 0x11f82f7f0>
devicepixelratio = 2.0
scaling = 2.0
size = (1241.8582677165357, 1128.4157480314962)
phelper = <veusz.document.painthelper.PaintHelper object at 0x129be7710>

Frame paintTo (File veusz/document/doc.py, line 369)
self = <veusz.document.doc.Document object at 0x11f73dcf0>
self.dict = {'changeset': 575, 'compatlevel': 1, 'datasettags': defaultdict(<class 'list'>, {}), 'suspendupdates': [], 'locale': <Py...
self.doc = 'Document class for holding the graph data.\n '
self.module = 'veusz.document.doc'
self.weakref = None
self.basewidget = <veusz.widgets.root.Root object at 0x12614b2d0>
self.changeset = 575
self.compatlevel = 1
self.data = {'O10 00': <veusz.datasets.plugin.Dataset2DPlugin object at 0x11ee5df50>, 'O10 10': <veusz.datasets.plugin.Dataset2DPlug...
self.datasettags = defaultdict(<class 'list'>, {})
self.evaluate = <veusz.document.evaluate.Evaluate object at 0x11dbada50>
self.filename = '/Users/pitou/Library/Mobile Documents/comappleCloudDocs/Université/PhD Thesis/Memoire/2_TogSwitch/Stochastique/Distr...
self.historybatch = []
self.historyredo = []
self.historyundo = [<veusz.document.operations.OperationSettingSet object at 0x129bba650>, <veusz.document.operations.OperationSettingSet o...
self.locale = <PyQt5.QtCore.QLocale object at 0x129bc78b0>
self.maxcompatlevel = 1
self.modified = True
self.pluginsloaded = True
self.staticMetaObject = <PyQt5.QtCore.QMetaObject object at 0x129da5150>
self.suspendupdates = []
painthelper = <veusz.document.painthelper.PaintHelper object at 0x129be7710>
page = 0

Frame draw (File veusz/widgets/root.py, line 144)
self = <veusz.widgets.root.Root object at 0x12614b2d0>
self.dict = {'parent': None, 'document': <veusz.document.doc.Document object at 0x11f73dcf0>, 'name': '/', 'children': [<veusz.widge...
self.doc = 'Root widget class for plotting the document.'
self.module = 'veusz.widgets.root'
self.actions = []
self.allowusercreation = False
self.childnames = ['O10 00', 'O10 10', 'O100 00', 'O100 10', 'O500 00', '0500 10']
self.children = [<veusz.widgets.page.Page object at 0x129bc22d0>, <veusz.widgets.page.Page object at 0x11f9b7850>, <veusz.widgets.page.P...
self.document = <veusz.document.doc.Document object at 0x11f73dcf0>
self.isaxis = False
self.isplotter = False
self.issetting = False
self.issettings = False
self.iswidget = True
self.name = '/'
self.nodetype = 'widget'
self.parent = None
self.path = '/'
self.settings = <veusz.setting.settings.Settings object at 0x12614ae50>
self.typename = 'document'
self.userdescription = ''
painthelper = <veusz.document.painthelper.PaintHelper object at 0x129be7710>
pagenum = 0
xw = 620.9291338582678
yw = 564.2078740157481
posn = [0, 0, 620.9291338582678, 564.2078740157481]
painter = <veusz.document.painthelper.RecordPainter object at 0x129eabed0>
page = <veusz.widgets.page.Page object at 0x129bc22d0>

Frame draw (File veusz/widgets/page.py, line 336)
self = <veusz.widgets.page.Page object at 0x129bc22d0>
self.dict = {'parent': <veusz.widgets.root.Root object at 0x12614b2d0>, 'document': <veusz.document.doc.Document object at 0x11f73dc...
self.doc = 'A class for representing a page of plotting.'
self.module = 'veusz.widgets.page'
self.weakref = None
self.actions = []
self.allowusercreation = True
self.childnames = ['scene3d1', 'label1', 'label2']
self.children = [<veusz.widgets.scene3d.Scene3D object at 0x129b33a90>, <veusz.widgets.textlabel.TextLabel object at 0x129d04090>, <veus...
self.description = 'Blank page'
self.document = <veusz.document.doc.Document object at 0x11f73dcf0>
self.isaxis = False
self.isplotter = False
self.issetting = False
self.issettings = False
self.iswidget = True
self.name = 'O10 00'
self.nodetype = 'widget'
self.parent = <veusz.widgets.root.Root object at 0x12614b2d0>
self.path = '/O10 00'
self.settings = <veusz.setting.settings.Settings object at 0x129b42e50>
self.typename = 'page'
self.userdescription = ''
parentposn = [0, 0, 620.9291338582678, 564.2078740157481]
painthelper = <veusz.document.painthelper.PaintHelper object at 0x129be7710>
outerbounds = None
s = <veusz.setting.settings.Settings object at 0x129b42e50>
x1 = 0
y1 = 0
x2 = 620.9291338582678
y2 = 564.2078740157481
axisdependhelper = <veusz.widgets.page.AxisDependHelper object at 0x10fd5d350>

Frame findAxisRanges (File veusz/widgets/page.py, line 271)
self = <veusz.widgets.page.AxisDependHelper object at 0x10fd5d350>
self.dict = {'deps': defaultdict(<class 'list'>, {(<veusz.widgets.axis3d.Axis3D object at 0x11f9ab990>, None): [(<veusz.widgets.surf...
self.doc = "A class to work out the dependency of widgets on axes and vice\n versa, in terms of ranges of the axes.\n\n Note:...
self.module = 'veusz.widgets.page'
self.weakref = None
self.axes = [<veusz.widgets.axis3d.Axis3D object at 0x11f9ab990>, <veusz.widgets.axis3d.Axis3D object at 0x11f9b58d0>, <veusz.widget...
self.axis_plotter_map = defaultdict(<class 'list'>, {<veusz.widgets.axis3d.Axis3D object at 0x11f9ab990>: [<veusz.widgets.surface3d.Surface3D ob...
self.axis_to_axislinked = {}
self.axislinked_to_axis = {}
self.deps = defaultdict(<class 'list'>, {(<veusz.widgets.axis3d.Axis3D object at 0x11f9ab990>, None): [(<veusz.widgets.surface3d.Sur...
self.pairs = [((<veusz.widgets.surface3d.Surface3D object at 0x129cec4d0>, 'sx'), (<veusz.widgets.axis3d.Axis3D object at 0x11f9ab990...
self.ranges = {<veusz.widgets.axis3d.Axis3D object at 0x11f9ab990>: [1e+99, -1e+99], <veusz.widgets.axis3d.Axis3D object at 0x11f9b58d...

Frame processDepends (File veusz/widgets/page.py, line 258)
self = <veusz.widgets.page.AxisDependHelper object at 0x10fd5d350>
ordered = [(<veusz.widgets.surface3d.Surface3D object at 0x129cec4d0>, 'sx'), (<veusz.widgets.surface3d.Surface3D object at 0x129c...
cyclic = []
dep = (<veusz.widgets.axis3d.Axis3D object at 0x11f9ab990>, None)

Frame processWidgetDeps (File veusz/widgets/page.py, line 229)
self = <veusz.widgets.page.AxisDependHelper object at 0x10fd5d350>
dep = (<veusz.widgets.axis3d.Axis3D object at 0x11f9ab990>, None)
widget = <veusz.widgets.axis3d.Axis3D object at 0x11f9ab990>
widget_dep = None
widgetd = <veusz.widgets.surface3d.Surface3D object at 0x129cec4d0>
widgetd_dep = 'sx'

Frame _updateRangeFromPlotter (File veusz/widgets/page.py, line 217)
self = <veusz.widgets.page.AxisDependHelper object at 0x10fd5d350>
axis = <veusz.widgets.axis3d.Axis3D object at 0x11f9ab990>
plotter = <veusz.widgets.surface3d.Surface3D object at 0x129cec4d0>
plotterdep = 'sx'

Frame getRange (File veusz/widgets/surface3d.py, line 117)
self = <veusz.widgets.surface3d.Surface3D object at 0x129cec4d0>
self.dict = {'parent': <veusz.widgets.graph3d.Graph3D object at 0x129b41e50>, 'document': <veusz.document.doc.Document object at 0x1...
self.doc = 'Plotting surface in 3D.'
self.module = 'veusz.widgets.surface3d'
self.weakref = None
self.actions = []
self.allowusercreation = True
self.childnames = []
self.children = []
self.description = '3D surface'
self.document = <veusz.document.doc.Document object at 0x11f73dcf0>
self.isaxis = False
self.isplotter = True
self.issetting = False
self.issettings = False
self.iswidget = True
self.mode_idxs = {'x(y,z)': (0, 1, 2), 'x(z,y)': (0, 2, 1), 'y(x,z)': (1, 0, 2), 'y(z,x)': (1, 2, 0), 'z(x,y)': (2, 0, 1), 'z(y,x)': (2, 1, 0)}
self.modes = ('x(y,z)', 'x(z,y)', 'y(x,z)', 'y(z,x)', 'z(x,y)', 'z(y,x)')
self.name = 'surface3d1'
self.nodetype = 'widget'
self.parent = <veusz.widgets.graph3d.Graph3D object at 0x129b41e50>
self.path = '/O10 00/scene3d1/graph3d1/surface3d1'
self.settings = <veusz.setting.settings.Settings object at 0x110047890>
self.typename = 'surface3d'
self.userdescription = ''
axis = <veusz.widgets.axis3d.Axis3D object at 0x11f9ab990>
depname = 'sx'
axrange = [1e+99, -1e+99]
s = <veusz.setting.settings.Settings object at 0x110047890>
data = <veusz.datasets.plugin.Dataset2DPlugin object at 0x11ee5df50>
axidx = 0
idx = 1
rng = None

Frame getDataRanges (File veusz/datasets/twod.py, line 138)
self = <veusz.datasets.plugin.Dataset2DPlugin object at 0x11ee5df50>
self.dict = {'pluginmanager': <veusz.plugins.datasetplugin.DatasetPluginManager object at 0x129be9b50>, 'pluginds': <veusz.plugins.d...
self.doc = 'Return 2D dataset from a plugin.'
self.module = 'veusz.datasets.plugin'
self.weakref = None
self.column_descriptions = ()
self.columns = ()
self.data = array([], shape=(1, 0), dtype=float64)
self.datatype = 'numeric'
self.dimensions = 2
self.displaytype = 'numeric'
self.document = <veusz.document.doc.Document object at 0x11f73dcf0>
self.dstype = 'Histogram 2D'
self.editable = False
self.linked = None
self.pluginds = <veusz.plugins.datasetplugin.Dataset2D object at 0x11dbaee10>
self.pluginmanager = <veusz.plugins.datasetplugin.DatasetPluginManager object at 0x129be9b50>
self.subsetclass = None
self.tags = set()
self.xcent = None
self.xedge = None
self.xrange = None
self.ycent = None
self.yedge = None
self.yrange = None

Frame getPixelEdges (File veusz/datasets/twod.py, line 81)
self = <veusz.datasets.plugin.Dataset2DPlugin object at 0x11ee5df50>
scalefnx = None
scalefny = None
fromcentres = <function Dataset2DBase.getPixelEdges..fromcentres at 0x129ebdf80>

Frame (File veusz/datasets/plugin.py, line 145)
self = <veusz.datasets.plugin.Dataset2DPlugin object at 0x11ee5df50>

Frame getPluginData (File veusz/datasets/plugin.py, line 33)
self = <veusz.datasets.plugin.Dataset2DPlugin object at 0x11ee5df50>
attr = 'xedge'

Frame update (File veusz/plugins/datasetplugin.py, line 465)
self = <veusz.plugins.datasetplugin.DatasetPluginManager object at 0x129be9b50>
self.dict = {'plugin': <veusz.plugins.datasetplugin.Histogram2D object at 0x110120390>, 'document': <veusz.document.doc.Document obj...
self.doc = 'Manage datasets generated by plugin.'
self.module = 'veusz.plugins.datasetplugin'
self.weakref = None
self.changeset = 575
self.datasetnames = ['O10 00']
self.datasets = [<veusz.plugins.datasetplugin.Dataset2D object at 0x11dbaee10>]
self.document = <veusz.document.doc.Document object at 0x11f73dcf0>
self.fields = {'binsx': 51, 'binsy': 51, 'ds_inx': 'TSS2α(2)β(2)Ω(10)tP(100)(0.0,0.0).dat4', 'ds_iny': 'TSS2α(2)β(2)Ω(10)tP(100)(0.0,0...
self.helper = <veusz.plugins.datasetplugin.DatasetPluginHelper object at 0x129be9650>
self.plugin = <veusz.plugins.datasetplugin.Histogram2D object at 0x110120390>
self.veuszdatasets = [<veusz.datasets.plugin.Dataset2DPlugin object at 0x11ee5df50>]
raiseerrors = False

Frame updateDatasets (File veusz/plugins/datasetplugin.py, line 1969)
self = <veusz.plugins.datasetplugin.Histogram2D object at 0x110120390>
self.dict = {'fields': [<veusz.plugins.field.FieldDataset object at 0x129beb410>, <veusz.plugins.field.FieldFloatOrAuto object at 0x...
self.doc = 'Compute 2D histogram for two 1D dataset.\n\n Algorithm: Count up values in boxes. Sort. Compute probability\n wor...
self.module = 'veusz.plugins.datasetplugin'
self.weakref = None
self.author = ''
self.description_full = 'Given two 1D datasets, compute a 2D histogram. Can optionally compute a probability distribution.'
self.description_short = 'Compute 2D histogram.'
self.dsout = <veusz.plugins.datasetplugin.Dataset2D object at 0x11dbaee10>
self.fields = [<veusz.plugins.field.FieldDataset object at 0x129beb410>, <veusz.plugins.field.FieldFloatOrAuto object at 0x129beb510>,...
self.has_parameters = True
self.menu = ('Compute', '2D histogram')
self.name = 'Histogram 2D'
fields = {'binsx': 51, 'binsy': 51, 'ds_inx': 'TSS2α(2)β(2)Ω(10)tP(100)(0.0,0.0).dat4', 'ds_iny': 'TSS2α(2)β(2)Ω(10)tP(100)(0.0,0...
helper = <veusz.plugins.datasetplugin.DatasetPluginHelper object at 0x129be9650>
dsy = array([0.1, 0.1, 2. , ..., 2.2, 2.4, 2.5])
dsx = array([1.7, 2.2, 0.3, ..., 0.1, 0. , 0. ])
miny = 0.0
maxy = 5.0
minx = 0.0
maxx = 5.0

Frame histogram2d (File <array_function internals>, line 198)
args = (array([0.1, 0.1, 2. , ..., 2.2, 2.4, 2.5]), array([1.7, 2.2, 0.3, ..., 0.1, 0. , 0. ]))
kwargs = {'bins': [51, 51], 'range': [[0.0, 5.0], [0.0, 5.0]], 'normed': False}
msg = "_histogram2d_dispatcher() got an unexpected keyword argument 'normed'"
disp_name = '_histogram2d_dispatcher'
new_msg = "histogram2d() got an unexpected keyword argument 'normed'"
dispatcher = <function _histogram2d_dispatcher at 0x1172bcb80>
implementation = <function histogram2d at 0x1172bce00>
public_api = <function histogram2d at 0x1172bcea0>

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions

      点击 这是indexloc提供的php浏览器服务,不要输入任何密码和下载