Getting Started
Opening a Dataset
Click Browse and select either a CSV or JSON file. An example dataset is available at https://beta.metrosets.algo.cit.tum.de/data/magic.csv.X
CSV format: The first column contains element names. Each additional column represents a metro line. A 1 in a cell means the element belongs to that line; a 0 means it does not.
JSON format: You can also import a previously exported editor state as a JSON file. This preserves layout, colors, labels, and all manual adjustments. Note that only JSON files exported by MetroSets+ can be imported.
Click Launch Editor to load the dataset and generate an initial metro map.
Starting from Scratch
Click Start from Scratch to begin with a blank canvas. Right-click anywhere on the map and select Create First Node Here, then enter a name. From there, you can build your map by right-clicking on existing stations to add more.
Example Datasets
You can also click on one of the provided example datasets to explore the editor without preparing your own data.
Preview Mode
Preview mode displays the finished metro map without editing controls. Use it to inspect the result before exporting.
Show Labels: Toggle station labels on or off.
Legend: A color-coded legend appears in the bottom right, showing which color corresponds to which metro line.
Line Thickness
Adjust the thickness of the metro lines using the slider. Changing the thickness also triggers a recomputation of label positions to avoid overlaps with the lines.
Legend Font Size
Adjust the font size of the legend using the slider.
Customize Line Colors
Click Customize Line Colors to open a dialog showing the color assigned to each metro line. You can:
Edit individual colors by entering a HEX code.
Select from predefined palettes (Tableau, Okabe-Ito, ColorBrewer).
Click Optimize to automatically reassign colors so that lines sharing many stations are as visually distinct as possible.
Map Editor
The Map Editor is where all layout and topology editing happens. Open it from the sidebar on the left.
Node Dragging
When Node Dragging is active, click and drag any station. While dragging, a force simulation runs: stations close to the dragged one (by graph distance) move along with it, while distant stations stay roughly in place. This lets you rearrange a local area without disrupting the rest of the map.
If schematization is enabled, releasing the station triggers an automatic re-schematization of the layout.
If schematization is off, the force simulation continues running until it converges, so you can freely rearrange stations without the schematization overriding your edits.
Single Node Drag
To move exactly one station without affecting any others, use Single Node Drag. Only the selected station moves; no force simulation is activated.
Run Force Simulation
Click Run Force to run the force simulation on the entire map. Use the counter to set the number of iterations. This is useful for spreading out dense areas or resetting the layout before manual refinement.
Schematization
Schematization enforces metro map conventions: every edge leaves a station in one of eight directions (multiples of 45 degrees), and stations are placed at approximately uniform distances. When schematization is enabled, the layout is automatically updated after every edit to maintain these constraints.
If the schematization cannot find a valid layout, a message will appear indicating an infeasible solution. This typically happens when too many edges meet at a single station. If this occurs, switch to Node Dragging mode to rearrange the problematic area, then re-enable schematization.
Assigning Ports
Each station has eight directional ports corresponding to the eight octolinear directions. In the editor:
Grey dots indicate occupied ports (an edge already uses that direction).
White dots indicate empty ports.
Hover over an occupied port to highlight it in orange.
Click an occupied port to select it (it turns yellow and stays selected).
With a port selected, click an empty port on the same station to reassign the edge to the new direction.
This gives you precise control over the direction of individual edges without having to drag stations around.
Straightening Edges
If you have assigned a port direction and want to propagate it along an entire line segment: double-click an occupied port. The system will assign the same direction (or its opposite) to all subsequent stations along the line, stopping when it reaches a junction (a station where another line branches off).
This lets you straighten an entire segment with a single action instead of assigning ports one by one.
Showing Metro Lines
Click Metro Lines to toggle the visibility of colored metro line paths on the map.
Showing Labels
Click Element Labels to toggle the visibility of station labels.
Adding a Station
Right-click on any existing station and select Add Node Here. A dialog appears where you can:
Enter one or more names (comma-separated to create multiple stations at once).
Choose which metro lines the new station should belong to. Only lines present at the selected station are offered, ensuring the new station can be connected without creating long-distance edges.
Create a new metro line in the same dialog.
Insert Position
When adding a station to an existing line, you can choose where to insert it:
On a mid-line station: Insert before or after the selected station.
On an endpoint station: Either keep the current endpoint and insert before it, or make the new station the new endpoint.
Use the dropdown menu to select your preferred option.
Creating the First Station
On an empty map, right-click anywhere and select Create First Node Here. Enter a name to create the first station. All further stations are added by right-clicking on existing ones.
Removing a Station
Right-click on a station and select Remove Node. The station is deleted after confirmation. Removal is not allowed if it would disconnect the map.
Editing Line Membership
Right-click on a station and select Edit Line Membership to change which metro lines pass through it. The dialog shows:
Current memberships: Uncheck a line to remove the station from it.
Nearby lines: Lines whose endpoints are within one edge distance, which the station could be added to.
Create new line: Enter a name to create a new metro line passing through this station. Stations belonging to only one line are displayed with a circle marker.
Adding to a Non-Adjacent Line
To add a station to a line that is not directly next to it, tick the Add to Non-Adjacent Line checkbox in the Edit Line Membership dialog. Then select the desired metro line from the dropdown. This creates a connection across the map.
Adding to a Neighboring Line
If a station is close enough to the endpoint of another line, an Add to Neighboring Line option appears in the right-click context menu. Click it and select the line to extend. If only one line is available, the editor selects it automatically.
Adding a node to a neighboring line
If you right click on a node, which could be physically added to an existing line, an Add to neighboring line option appears in the context menu. The physically possible means that an end of another line is within 1 distance away. If you click on it, a menu appears and you can extend the line, after selecting the desired metro line.
If the list would only have one option, the app automatically selects it.
Self-Crossing Removal
If a metro line crosses itself, right-click on the crossing and select Remove Self-Crossing. The system swaps the endpoints of the crossing edges to eliminate the self-intersection.
Spacer Tool
The spacer tool creates additional space in dense areas. When activated:
Hold the right mouse button and draw a line across one or more metro line segments.
At each intersection, an invisible spacer station is inserted.
Because the schematization enforces uniform edge lengths, the surrounding stations are pushed apart.
Note: Zooming is disabled while the spacer tool is active.
Removing a Spacer
To remove a spacer, either use Undo, or look for the faint brown square in the Map Editor view that marks the spacer location. Right-click it and select Remove Space.
Changing Line Connections
Reorder Connections
To change the order in which a metro line visits its stations:
Click Reorder and select a metro line (or right-click on a visible metro line and choose Reorder Connections).
The rest of the map becomes faded. Click on stations in the order you want the line to follow.
When the remaining order is obvious, click Finish Rest with TSP to let the system compute the shortest remaining path automatically. Alternatively, click Finish Using Existing Order to keep the current order for the remaining stations.
Once all stations are placed, click Reintegrate Line to apply the changes.
You can use Undo/Redo at any point during reordering.
Swap Stations
Click Swap Stations, then click on a station. The editor highlights all eligible swap partners. Click a second station to exchange their labels and identities while keeping positions fixed.
Rules: You can only swap two stations that belong to exactly the same set of metro lines. You can also swap a station with a spacer on the same line (eligible spacers are shown in orange).
View Line Connections
Right-click on a visible metro line and select View Line Connections. A numbered overlay appears on the map, and a draggable list appears in the sidebar. Drag items in the list to reorder the line’s visiting sequence.
Undo and Redo
Use the Undo and Redo buttons in the toolbar, or press Ctrl+Z and Ctrl+Y.
Label Editor
The Label Editor provides tools for fine-tuning station label placement. When you open it, the system runs an automatic labeling algorithm that finds the largest font size at which all labels can be placed without overlapping each other or the metro lines.
Changing Label Size
If the automatically chosen font size is not to your liking, use the slider to set it manually. You can also return to the automatic size.
Setting a Single Label Position
Right-click on a station and select Set Label Position. Choose from eight directional options to control where the label appears relative to the station. Click the × in the center to remove the preference for this label.
Labels set manually take priority over the automatic algorithm and will not be overridden.
Setting Line Label Position
To set the label direction for all stations on a metro line at once:
Right-click on a station and select Set Line Label Position.
Select the metro line from the list (colored dots indicate line colors; bold text indicates that a preference is already set).
Choose a direction. All labels on the selected line will be updated.
Click the × to remove the preference for the entire line.
Setting Segment Label Position
Segment labeling is a middle ground between single-label and full-line control. When you set a label direction on a station, all neighboring stations on the same line that face the same direction are updated too, stopping at any junction where another line branches off.
This is useful when a line has turns: you can unify labels along each straight segment without affecting the rest of the line.
Click the × to remove the preference for the segment.
Labeling Workflow
If you want to customize labels beyond what the automatic algorithm provides:
Clear Labeling: Click this to enter draft mode. Automatically placed labels are dimmed to 20% opacity so you can still see them, while labels you set manually appear at full opacity.
Set preferences: Right-click on stations to set label directions as needed. The automatic algorithm recomputes the remaining labels around your choices.
Finalize Labels: When you are satisfied, click this to restore all labels to full opacity.
Clear All Preferences
To remove all manual label preferences and return to fully automatic placement, click Clear All Preferences. This works in both draft mode and normal mode.
Exporting
PNG and SVG Export
Click PNG or SVG in the toolbar to export the currently visible portion of the map. This works in both the Edit and Preview views.
To capture the entire map, zoom out until everything is visible. To export only a portion, zoom in to the desired area.
Data Export and Import
To save your current editing state (layout, colors, labels, and all adjustments), click Export. This creates a JSON file that you can later import to resume editing, or share with collaborators.
Metrics Panel
The Metrics panel in the sidebar displays real-time quality measures for the current layout. All metrics are interactive: hover over a value to highlight the corresponding locations on the map.
Total Line Bends
The total number of bends across all metro lines, broken down by angle (45°, 90°, 135°). Hover over a specific angle category to highlight all bends of that type on the map. Bends at 135° are particularly problematic as they indicate near-reversals in a line’s direction.
Crossings
The number of points where two metro lines cross without a shared station. Fewer crossings generally means a cleaner, more readable map.
Station on Unrelated Line
Station that lie either on another station or on an unrelated line. This creates relationships in the visualization that are not in the data. This is a severe layout error.
Max Bends per Line
The highest number of bends on any single metro line. A high number indicates that at least one line has a complex, hard-to-follow path.
False Neighbor Pairs
Two stations that are placed close together on the map but do not share any metro line. Their proximity may mislead readers into assuming a relationship that does not exist. High counts suggest the layout should be adjusted by dragging stations apart or inserting spacers.
Monotonicity Violations
A monotonicity violation occurs when a line reverses direction along the horizontal or vertical axis (for example, moving right then left). Violations make lines harder to trace visually and do not normally occur in well-designed metro maps.
Label Overlaps
The number of labels that overlap another label or a metro line. This metric is only shown in the Label Editor or Preview mode. Hover over the value to highlight the affected labels.

























