Affichage des articles dont le libellé est python 3d bar chart. Afficher tous les articles
Affichage des articles dont le libellé est python 3d bar chart. Afficher tous les articles

Python Tkinter 3D Bar Chart

How to Create a 3D Bar Chart In Python Tkinter

Python Tkinter 3D Bar Chart


In this Python tutorial we will create a 3D bar char using the Tkinter library for the graphical user interface. 
Each bar features a distinct front, top, and side face, creating a three-dimensional appearance.

What We Are Gonna Use In This Project:

- Python Programming Language.
- Tkinter for GUI.
- VS Code Editor.




Project Source Code:


import tkinter as tk
import random

class ThreeDBarChartPanel(tk.Canvas):

def __init__(self, master=None, **kwargs):
# Initialize the ThreeDBarChartPanel as a Canvas
super().__init__(master, **kwargs)
# Bar Colors
self.color_side_face = "#2c3e50"
self.color_top_face = "#e74c3c"
self.color_front_face = "#3498db"
# Draw the 3D bar chart
self.draw_chart()

def draw_chart(self):
width = self.winfo_reqwidth()
height = self.winfo_reqheight()
num_bars = 10
bar_width = 40
bar_spacing = 30

base_x = (width - (num_bars * (bar_width + bar_spacing) - bar_spacing)) /2
base_y = height - 100

labels = [f"label{i}" for i in range(1, num_bars + 1)]

# Draw horizontal lines for reference
num_horizontal_lines = 5
horizontal_spacing = (base_y - 50) // num_horizontal_lines

for i in range(num_horizontal_lines + 1):
y = base_y - i * horizontal_spacing
#self.create_line(30, y, width - 20, y, fill="lightgray", dash=(2,2))
self.create_line(30, y, width - 20, y, fill="lightgray")

# Draw Bars
for i in range(num_bars):
x = base_x + i * (bar_width + bar_spacing)
bar_height = random.randint(50, 250)
z = 10

# Draw the front face of the bar
self.create_rectangle(x, base_y - bar_height, x + bar_width, base_y,
            fill=self.color_front_face)

# Draw the top face of the bar
top_face = [ x, base_y - bar_height, x + bar_width, base_y-bar_height,
            x + bar_width + z, base_y - bar_height-z, x + z, base_y - bar_height-z ]
self.create_polygon(top_face, fill=self.color_top_face)

# Draw the side face of the bar
side_face = [ x + bar_width, base_y - bar_height, x + bar_width, base_y,
            x + bar_width + z, base_y - z, x + bar_width + z, base_y - bar_height-z ]
self.create_polygon(side_face, fill=self.color_side_face)

# Draw vertical axis labels
axis_label_x = x + bar_width / 2
axis_label_y = base_y + 20
self.create_text(axis_label_x, axis_label_y, text=labels[i])


# Draw horizontal axis labels
num_ticks = 5
tick_spacing = (base_y - 50) / num_ticks
self.create_text(base_x - 20, base_y - 5, text="0")

for i in range(1, num_ticks + 1):
tick_value = 40 + i * 40
self.create_text(base_x - 30, base_y - i * tick_spacing,
            text = str(tick_value))



class ThreeDBarChartApp:
def __init__(self, root):
self.root = root
self.root.title("3D Bar Chart")
self.root.geometry("800x500")
self.root.resizable(False, False)

# Create and pack the ThreeDBarChartPanel
self.chartPanel = ThreeDBarChartPanel(self.root, bg="white", width="800",
        height="400")
self.chartPanel.pack(expand=True, fill="both")



if __name__ == "__main__":
root = tk.Tk()
app = ThreeDBarChartApp(root)
root.mainloop()


The Final Result:

How to Create a 3D Bar Chart In Python Tkinter