<｜begin▁of▁sentence｜>### Instruction:
As a scientific illustrator, imagine you are tasked with creating a visual representation of a directed graph depicting the flow of information in a research network. The graph consists of vertices representing researchers [0, 1, 2] and edges [(0, 1), (1, 2)] representing the flow of knowledge. How would you use the TaperedEdgeDrawer class from the NetworkX library to accurately depict the directed edges in the graph within your illustration?
### Response:
import igraph as ig
from igraph.drawing.edge import TaperedEdgeDrawer

# Create a directed graph with 3 vertices and 2 edges
edges = [(0, 1), (1, 2)]
g = ig.Graph(edges, directed=True)

# Define custom visual styles
visual_style = {
    'vertex_size': 20,
    'vertex_color': 'blue',
    'edge_curved': False,
    'vertex_label': list(map(str, range(3)))
}

# Initialize plot
ig.plot(g, **visual_style)

# Create an instance of TaperedEdgeDrawer
layout = g.layout()
drawer = TaperedEdgeDrawer(g)

# Draw directed edges using the drawer
for edge in g.es:
    drawer.draw_directed_edge(edge, src_vertex=g.vs[edge.source], dest_vertex=g.vs[edge.target])
<|EOT|>
