Hi! So, I'm a bit biased in my opinion on this topic, but I'll gladly share what I think.
For starters, the GUI options in Rust are all over the place. You can see some examples at Are we GUI yet? and I have tried many of these over several different projects with various goals. I think I would personally weigh my options between these two:
Tauri if you really want to create a web-based desktop or mobile app. Emphasis on web-based. Developers who will naturally migrate to this kind of stack are probably those familiar with Electron, and who (for reasons) are tied to React or whatever big SPA frameworks are popular on this day of the month.
egui is a good choice for developers who are more interested in developing an application that operates internally like a game. You have the full power of a GPU at your fingertips if that's what you really want. The selection of built-in widgets is fairly complete, including a plot widget that can even do fancy real time animations.
In full disclosure, I'm a game developer so my immediate choice is egui, even for desktop applications that are decidedly not games. I don't intend to compare and contrast the immediate mode vs retained mode GUI architectures, but I do believe that immediate mode wins out (with the added compromise that a mixture of the two philosophies is actually not all that bad, and definitely an improvement over purely retained mode).
I started to make another application using egui recently, and it always feels very nice (and right at home) to use it. You have a choice of backends, but my go to is egui-wgpu. Not that it really matters, because almost all of the graphics layer is abstracted away.
bevy is awesome, too, but for quite different reasons. I haven't used its GUI implementation, nor any of the available replacements. What bevy excels at is its incredible ECS that makes managing data extremely flexible. That said, I haven't found a single application design that I would ever need ECS for. The kinds of problems it solves are of the variety "this whatchamacallit is like that doohickey except it can also dingbat, but it can't florb like the doohickey can". Which is very much unlike any data flow in any application I know of (assuming it's a user-facing application with a GUI for humans to manipulate some data; you can always contrive an example where weird data flows make sense for non-human consumption).
Winit is the stock way to get a window and event loop in Rust (though glazier might be a better choice for applications later)
Piet is a long standing and stable, pretty slick canvas-like rendering API, which sounds like a good match for what you're talking about here.
If you want a proper application widget toolkit, things get a bit messier. Egui is very simple to use, and will get you going quick, but I found it very hard to make it do exactly what I wanted.
Druid, Iced, and so on in the other "pure rust" toolkits are interesting but still very experimental for now (Iced got picked by Pop! OS for their next desktop UI though, so it's probably going to get productionized relatively quickly)
Tauri is a very complete system, with only a few rough edges, and is probably the best pick right now to build a shipping program, given the well developed HTML user interface ecosystem. Tauri also has a very complete OS integration: including packaging, self update, and platform API access, including implementing custom backend behavior in Rust quite simply.