YouTip LogoYouTip

Matplotlib Ref Advanced Plots

* * Matplotlib Reference](#) In addition to basic plotting functions such as plot() and bar(), Matplotlib provides a variety of specialized plotting functions for step plots, stem plots, stacked area charts, polar plots, and more. ## Function Overview | Function | Description | | --- | --- | | step() | Draw a step plot (piecewise constant data changes) | | stem() | Draw a stem plot (vertical lines with top markers) | | eventplot() | Draw an event plot (multiple horizontal lines marking event positions) | | stackplot() | Draw a stacked area chart | | broken_barh() | Draw a horizontal broken bar chart (Gantt chart style) | | vlines() / hlines() | Draw multiple vertical/horizontal reference lines | | fill() | Draw filled polygons | | polar() | Plot in polar coordinates | | loglog() / semilogx() / semilogy() | Logarithmic coordinate line plots | | grouped_bar() | Grouped bar chart (3.10+ new feature) | | bar_label() / pie_label() | Add value labels to bar charts/pie charts | * * * ## step() - Step Plot matplotlib.pyplot.step(x, y, *args, where='pre', **kwargs) | Parameter | Description | | --- | --- | | x, y | Data point coordinates | | where | Step position: 'pre' (before), 'post' (after), 'mid' (middle) | ## Example import matplotlib.pyplot as plt import numpy as np x = np.arange(0,10,0.5) y = np.sin(x) fig, ax = plt.subplots(figsize=(8,4), layout='constrained') # Compare three where modes ax.plot(x, y,'gray', alpha=0.3, label='Original (plot)') ax.step(x, y, where='pre', label='where="pre"', linewidth=2) ax.step(x, y, where='post', label='where="post"', linewidth=2) ax.step(x, y, where='mid', label='where="mid"', linewidth=2) ax.set_title('step() - Staircase Plot') ax.legend() ax.grid(True, alpha=0.3) plt.show() * * * ## stem() - Stem Plot matplotlib.pyplot.stem(*args, linefmt=None, markerfmt=None, basefmt=None, bottom=0, orientation='vertical', **kwargs) ## Example import matplotlib.pyplot as plt import numpy as np n =30 x = np.arange(n) y = np.random.randn(n) * 2 fig,(ax1, ax2)= plt.subplots(1,2, figsize=(10,4), layout='constrained') # Vertical stem plot ax1.stem(x, y, linefmt='steelblue', markerfmt='o', basefmt='gray') ax1.set_title('Vertical stem()') # Horizontal stem plot ax2.stem(x, y, linefmt='coral', markerfmt='s', basefmt='gray', orientation='horizontal') ax2.set_title('Horizontal stem()') plt.show() * * * ## stackplot() - Stacked Area Chart matplotlib.pyplot.stackplot(x, *args, labels=None, colors=None, baseline='zero', **kwargs) ## Example import matplotlib.pyplot as plt import numpy as np x = np.arange(0,10,0.1) y1 = np.sin(x) + 2 y2 = np.cos(x) + 2 y3 =0.5 * np.sin(2*x) + 2 fig, ax = plt.subplots(figsize=(8,5), layout='constrained') ax.stackplot(x, y1, y2, y3, labels=['Signal 1','Signal 2','Signal 3'], colors=['#3498db','#e74c3c','#2ecc71'], alpha=0.7) ax.set_title('stackplot() - Stacked Area Chart') ax.legend(loc='upper right') plt.show() * * * ## vlines() / hlines() - Reference Lines matplotlib.pyplot.vlines(x, ymin, ymax, colors=None, **kwargs) matplotlib.pyplot.hlines(y, xmin, xmax, colors=None, **kwargs) ## Example import matplotlib.pyplot as plt import numpy as np x = np.linspace(0,10,100) y = np.sin(x) fig, ax = plt.subplots(figsize=(8,4), layout='constrained') ax.plot(x, y,'k-', linewidth=2, alpha=0.7) # Multiple vertical lines (marking multiples of Ο€) pi_x =[np.pi,2*np.pi,3*np.pi] ax.vlines(pi_x, ymin=-1.5, ymax=1.5, colors='red', linestyles='--', alpha=0.5, label='Ο€ multiples') # Multiple horizontal lines (marking Β±1) ax.hlines([-1,0,1], xmin=0, xmax=10, colors=['gray','gray','gray'], linestyles=['--',':','--'], alpha=0.5) ax.set_title('vlines() and hlines()') ax.legend() plt.show() * * * ## loglog() / semilogx() / semilogy() - Logarithmic Coordinates matplotlib.pyplot.loglog(*args, **kwargs) matplotlib.pyplot.semilogx(*args, **kwargs) matplotlib.pyplot.semilogy(*args, **kwargs) ## Example import matplotlib.pyplot as plt import numpy as np x = np.logspace(0,3,50)# 10^0 to 10^3 y1 = x**2 y2 = x**1.5 y3 = np.exp(x/50) fig, axes = plt.subplots(1,3, figsize=(12,4), layout='constrained') # Double logarithmic axes.loglog(x, y1,'b-', label='xΒ²') axes.loglog(x, y2,'r--', label='x¹·⁡') axes.set_title('loglog()') axes.grid(True, alpha=0.3) axes.legend() # x-axis logarithmic axes.semilogx(x, y3,'green', label='exp(x/50)') axes.set_title('semilogx()') axes.grid(True, alpha=0.3) # y-axis logarithmic axes.semilogy(x, y3,'purple', label='exp(x/50)') axes.set_title('semilogy()') axes.grid(True, alpha=0.3) plt.show() * * * ## eventplot() - Event Plot matplotlib.pyplot.eventplot(positions, orientation='horizontal', lineoffsets=1, linelengths=1, linewidths=None, colors=None, **kwargs) ## Example import matplotlib.pyplot as plt import numpy as np np.random.seed(42) # Event times for three channels events_A = np.random.rand(20) * 10 events_B = np.random.rand(15) * 10 events_C = np.random.rand(25) * 10 fig, ax = plt.subplots(figsize=(8,4), layout='constrained') ax.eventplot([events_A, events_B, events_C], colors=['#e74c3c','#3498db','#2ecc71'], lineoffsets=[0,1,2],# Vertical position of each line linelengths=0.8, linewidths=1.5) ax.set_title('eventplot() - Event Timing Diagram') ax.set_xlabel('Time (s)') ax.set_yticks([0,1,2]) ax.set_yticklabels(['Channel A','Channel B','Channel C']) plt.show() * * * ## broken_barh() - Broken Bar Chart matplotlib.pyplot.broken_barh(xranges, yrange, **kwargs) ## Example import matplotlib.pyplot as plt # Simulating a Gantt chart tasks =[ [(0,5)],# Task 1: starts at 0, lasts 5 [(3,4)],# Task 2: starts at 3, lasts 4 [(2,3),(6,3)],# Task 3: two time periods [(5,4)],# Task 4 [(1,2),(4,2),(8,2)],# Task 5: three time periods ] fig, ax = plt.subplots(figsize=(8,4), layout='constrained') colors =['#3498db','#e74c3c','#2ecc71','#f39c12','#9b59b6'] for i,(task, color)in enumerate(zip(tasks, colors)): ax.broken_barh(task,(i - 0.4,0.8), facecolors=color) ax.set_title('broken_barh() - Gantt-style Chart') ax.set_xlabel('Time') ax.set_yticks(range(5)) ax.set_yticklabels([f'Task {i+1}'for i in range(5)]) ax.grid(True, alpha=0.3) plt.show() * * * ## fill() - Filled Polygon matplotlib.pyplot.fill(*args, **kwargs) ## Example import matplotlib.pyplot as plt import numpy as np fig, ax = plt.subplots(layout='constrained') # Fill a diamond x =[1,2,1,0] y =[0,1,2,1] ax.fill(x, y, alpha=0.5, color='steelblue', edgecolor='black', label='Diamond') # Fill a pentagon theta = np.linspace(0,2*np.pi,6) x2 =2.5 + np.cos(theta) y2 =1 + np.sin(theta) ax.fill(x2, y2, alpha=0.5, color='coral', edgecolor='black', label='Pentagon') ax.set_title('fill() - Filled Polygons') ax.set_aspect('equal') ax.legend() ax.grid(True, alpha=0.3) plt.show() [![Image 2: Matplotlib Reference](#) Matplotlib Reference](#)
← Matplotlib Ref BarMatplotlib Func β†’