India has a total geographical area of 329 million hectares, with approximately 180 million hectares of agricultural land and an estimated 9 million tractors in use. Tractors are vital for Indian farming to drive mechanization, and Swaraj Tractors plays a key role through durable, fuel-efficient designs tailored to local soil needs.Land and Agriculture in IndiaTotal Land Area: 329 million hectares (3.29 million sq km)Agricultural Land: ~180.11 million hectares (approx. 51% to 60% of total land area)Total Cropped Area: ~219.16 million hectares due to multi-croppingTractors in UseTotal Tractors: An estimated 8.5 to 9 million operational tractors across India.Market Status: India is the world's largest tractor market and producer, driven by high domestic demand and government mechanization schemes like the Sub-Mission on Agricultural Mechanization (SMAM).Importance of Tractors and Swaraj's RoleRole of Mechanization: Tractors reduce dependence on manual labor, speed up deep ploughing, manage heavy rotary tillers, and assist in rapid harvest transport.Swaraj's Impact:As a major division of Mahindra & Mahindra, Swaraj Tractors holds a prominent market share (~18.7%) as one of India's top tractor brands.Famous for rugged build quality and fuel efficiency (FE series), Swaraj models range from 15 HP mini tractors for orchards up to heavy-duty 75 HP variants, fitting diverse regional farm sizes.Affordability and strong rural servicing match the needs of small and marginal Indian farmers, making mechanization practical and accessible. I need a visualisation like xcel sheet tree

Reading File
Running Command

ls -la /tmp/workspace/ 2>/dev/null || mkdir -p /tmp/workspace && echo "workspace ready"

Running Command

mkdir -p /tmp/workspace/india-tractor-tree && cat > /tmp/workspace/india-tractor-tree/build_tree.py << 'PYEOF' import openpyxl from openpyxl.styles import ( Font, PatternFill, Alignment, Border, Side, GradientFill ) from openpyxl.utils import get_column_letter wb = openpyxl.Workbook() ws = wb.active ws.title = "India Land & Tractor Tree" # ── Color palette ────────────────────────────────────────── C_ROOT = "1F4E79" # deep navy – ROOT node C_L1 = "2E75B6" # mid blue – Level-1 nodes C_L1B = "2F5597" # dark blue – Level-1 alt C_L2A = "70AD47" # green – Level-2 land C_L2B = "ED7D31" # orange – Level-2 tractors C_L2C = "FFC000" # amber – Level-2 Swaraj C_L3A = "C6EFCE" # lt green – Level-3 land leaves C_L3B = "FCE4D6" # lt orange – Level-3 tractor leaves C_L3C = "FFEB9C" # lt amber – Level-3 Swaraj leaves C_CONN = "BDD7EE" # connector – indentation guide C_HDR = "243F60" # header bar WHITE = "FFFFFF" BLACK = "000000" # ── Helper ───────────────────────────────────────────────── def fill(hex_color): return PatternFill("solid", fgColor=hex_color) def border_thin(color="BFBFBF"): s = Side(style="thin", color=color) return Border(left=s, right=s, top=s, bottom=s) def border_left(color, thick=False): ls = Side(style="medium" if thick else "thin", color=color) return Border(left=ls) def write_node(ws, row, col_offset, label, value, node_fill_hex, font_color=WHITE, bold=True, font_size=10, indent_cols=None, connector_hex=None): """Write a tree node row. indent_cols draws faint connector cells.""" if indent_cols: for ic in indent_cols: cell = ws.cell(row=row, column=ic) cell.fill = fill(connector_hex or C_CONN) # label cell lc = ws.cell(row=row, column=col_offset, value=label) lc.font = Font(name="Arial", bold=bold, color=font_color, size=font_size) lc.fill = fill(node_fill_hex) lc.alignment = Alignment(horizontal="left", vertical="center", wrap_text=True, indent=1) lc.border = border_thin() # value cell vc = ws.cell(row=row, column=col_offset + 1, value=value) vc.font = Font(name="Arial", bold=False, color=BLACK, size=10) vc.fill = fill(node_fill_hex) vc.alignment = Alignment(horizontal="right", vertical="center") vc.border = border_thin() return lc, vc # ── Column widths ────────────────────────────────────────── col_widths = {1: 3, 2: 3, 3: 3, 4: 3, 5: 28, 6: 22, 7: 22, 8: 22} for c, w in col_widths.items(): ws.column_dimensions[get_column_letter(c)].width = w # Row heights will be set per row (default 18 pt) def set_row_height(ws, row, ht): ws.row_dimensions[row].height = ht # ── HEADER BAR ───────────────────────────────────────────── ws.merge_cells("A1:H1") hdr = ws["A1"] hdr.value = "INDIA – LAND & TRACTOR ECOSYSTEM | Tree Visualisation" hdr.font = Font(name="Arial", bold=True, color=WHITE, size=13) hdr.fill = fill(C_HDR) hdr.alignment = Alignment(horizontal="center", vertical="center") hdr.border = border_thin("243F60") set_row_height(ws, 1, 30) # ── Column header row ────────────────────────────────────── ws.merge_cells("A2:H2") sub = ws["A2"] sub.value = "Hierarchy Level ► Category ► Key Metric / Sub-detail ► Value" sub.font = Font(name="Arial", italic=True, color="D9E1F2", size=9) sub.fill = fill("2E4A7E") sub.alignment = Alignment(horizontal="center", vertical="center") set_row_height(ws, 2, 16) # ── Tree data rows ───────────────────────────────────────── # Each entry: (row, indent_level, label_col, label, value, # node_fill, font_color, bold, font_size) # indent_level drives which columns 1-4 get connector shading current_row = 3 def add_blank(n=1): global current_row for _ in range(n): ws.row_dimensions[current_row].height = 6 current_row += 1 def node(label, value, level, fill_hex, font_hex=WHITE, bold=True, size=10, merge_label=False): global current_row r = current_row set_row_height(ws, r, 22) indent_cols = list(range(1, level + 1)) if level > 0 else [] label_col = level + 1 # col 1 for root, 2 for L1, etc. # draw connector cells for ic in indent_cols: cc = ws.cell(row=r, column=ic) cc.fill = fill("E2EFDA" if level <= 2 else "FDEBD0") # decide span for label: always covers up to col 5 if label_col < 5: ws.merge_cells( start_row=r, start_column=label_col, end_row=r, end_column=5 ) lc = ws.cell(row=r, column=label_col, value=label) lc.font = Font(name="Arial", bold=bold, color=font_hex, size=size) lc.fill = fill(fill_hex) lc.alignment = Alignment(horizontal="left", vertical="center", wrap_text=True, indent=1) lc.border = border_thin() # value columns 6-8 merged ws.merge_cells(start_row=r, start_column=6, end_row=r, end_column=8) vc = ws.cell(row=r, column=6, value=value) vc.font = Font(name="Arial", bold=False, color=BLACK, size=10) vc.fill = fill(fill_hex) vc.alignment = Alignment(horizontal="left", vertical="center", wrap_text=True, indent=1) vc.border = border_thin() current_row += 1 # ══════════════════════════════════════════════════════════ # ROOT node("🌏 INDIA – LAND & AGRICULTURAL TRACTOR OVERVIEW", "Total Geographical Area: 329 million hectares", level=0, fill_hex=C_ROOT, font_hex=WHITE, bold=True, size=12) add_blank() # ── L1: LAND node("📐 LAND & AREA", "Total: 329 Mn ha | 329,000 sq km equiv.", level=1, fill_hex=C_L1, bold=True, size=11) # L2 under LAND node("Total Geographical Area", "329 million hectares (3.29 million sq km)", level=2, fill_hex="DEEAF1", font_hex=BLACK, bold=True, size=10) node("Agricultural Land", "~180.11 million hectares (≈ 51–60% of total)", level=2, fill_hex=C_L3A, font_hex=BLACK, bold=False, size=10) node("Total Cropped Area", "~219.16 million hectares (higher due to multi-cropping)", level=2, fill_hex=C_L3A, font_hex=BLACK, bold=False, size=10) node("Non-Agricultural Land", "~148.89 million hectares (forests, wasteland, urban, water bodies)", level=2, fill_hex=C_L3A, font_hex=BLACK, bold=False, size=10) node("Cropping Intensity", "~121.7% (Total Cropped Area ÷ Net Sown Area × 100)", level=2, fill_hex=C_L3A, font_hex=BLACK, bold=False, size=10) add_blank() # ── L1: TRACTORS node("🚜 TRACTORS IN USE", "~8.5 – 9 million operational tractors across India", level=1, fill_hex=C_L1B, bold=True, size=11) node("Total Tractors (Estimated)", "8.5 – 9 million units (operational fleet)", level=2, fill_hex="FCE4D6", font_hex=BLACK, bold=True, size=10) node("Market Status", "World's largest tractor market & producer", level=2, fill_hex=C_L3B, font_hex=BLACK, bold=False, size=10) node("Government Scheme", "Sub-Mission on Agricultural Mechanization (SMAM) – drives adoption", level=2, fill_hex=C_L3B, font_hex=BLACK, bold=False, size=10) # L2 > Role of mechanization (L3) node(" Role of Mechanization", "", level=2, fill_hex="F2DCDB", font_hex=BLACK, bold=True, size=10) node("Deep Ploughing", "Reduces manual labour; speeds field preparation for Kharif & Rabi seasons", level=3, fill_hex=C_L3B, font_hex=BLACK, bold=False, size=9) node("Heavy Implement Management", "Powers rotary tillers, cultivators, harvesters, and seed drills", level=3, fill_hex=C_L3B, font_hex=BLACK, bold=False, size=9) node("Harvest Transport", "Rapid intra-farm and last-mile transport of produce", level=3, fill_hex=C_L3B, font_hex=BLACK, bold=False, size=9) add_blank() # ── L1: SWARAJ node("⭐ SWARAJ TRACTORS (Mahindra & Mahindra)", "Market Share: ~18.7% | One of India's top tractor brands", level=1, fill_hex="7B5E00", font_hex=WHITE, bold=True, size=11) node("Parent Company", "Mahindra & Mahindra Ltd. – Swaraj Division", level=2, fill_hex="FFF2CC", font_hex=BLACK, bold=True, size=10) node("Market Share", "~18.7% (one of the highest among Indian brands)", level=2, fill_hex=C_L3C, font_hex=BLACK, bold=False, size=10) node("HP Range", "15 HP (mini / orchard tractors) → 75 HP (heavy-duty)", level=2, fill_hex=C_L3C, font_hex=BLACK, bold=False, size=10) node("Flagship Series", "FE Series – known for fuel efficiency & rugged build quality", level=2, fill_hex=C_L3C, font_hex=BLACK, bold=False, size=10) node("Target Customer", "Small & marginal farmers (< 2 ha holdings) – affordability focus", level=2, fill_hex=C_L3C, font_hex=BLACK, bold=False, size=10) node("Rural Service Network", "Extensive dealer + service touchpoints aligned to village-level needs", level=2, fill_hex=C_L3C, font_hex=BLACK, bold=False, size=10) # L2 → Model range (L3) node(" Model Range Highlights", "", level=2, fill_hex="FFD966", font_hex=BLACK, bold=True, size=10) node("Swaraj 717 (17 HP)", "Mini tractor for orchards, poly-houses, vegetable farms", level=3, fill_hex=C_L3C, font_hex=BLACK, bold=False, size=9) node("Swaraj 735 FE (35 HP)", "Mid-range workhorse; paddy & wheat belt most popular", level=3, fill_hex=C_L3C, font_hex=BLACK, bold=False, size=9) node("Swaraj 744 FE (44 HP)", "All-purpose; rotavator, trolley, and PTO implements compatible", level=3, fill_hex=C_L3C, font_hex=BLACK, bold=False, size=9) node("Swaraj 855 FE (55 HP)", "Heavy field operations; sugarcane & cotton regions", level=3, fill_hex=C_L3C, font_hex=BLACK, bold=False, size=9) node("Swaraj 963 FE (63 HP)", "High HP variant; combines, threshers, paddy transplanters", level=3, fill_hex=C_L3C, font_hex=BLACK, bold=False, size=9) node("Swaraj 742 XT (42 HP)", "Latest XT series; 4WD option; better traction in wet soils", level=3, fill_hex=C_L3C, font_hex=BLACK, bold=False, size=9) add_blank() # ── L1: KEY RATIOS / SUMMARY STATS node("📊 KEY RATIOS & SUMMARY", "", level=1, fill_hex="375623", font_hex=WHITE, bold=True, size=11) node("Tractors per Mn ha Agricultural Land", "≈ 50 tractors per 1,000 hectares of agricultural land", level=2, fill_hex="E2EFDA", font_hex=BLACK, bold=False, size=10) node("Agricultural Land %", "~54.7% of total geographical area (180 ÷ 329)", level=2, fill_hex="E2EFDA", font_hex=BLACK, bold=False, size=10) node("Cropping Intensity", "~121.7% → multi-cropping adds ~39 Mn ha extra sown area", level=2, fill_hex="E2EFDA", font_hex=BLACK, bold=False, size=10) node("Swaraj's Approx. Fleet Contribution", "~1.6 – 1.7 Mn tractors (@18.7% of 9 Mn total)", level=2, fill_hex="E2EFDA", font_hex=BLACK, bold=False, size=10) # ── Footer ───────────────────────────────────────────────── add_blank() r = current_row ws.merge_cells(f"A{r}:H{r}") fc = ws[f"A{r}"] fc.value = ("Sources: Ministry of Agriculture & Farmers Welfare, GoI | " "Mahindra & Mahindra Swaraj Division | SMAM Scheme Data | " "Agricultural Census India | Orris AI – July 2026") fc.font = Font(name="Arial", italic=True, color="595959", size=8) fc.fill = fill("F2F2F2") fc.alignment = Alignment(horizontal="center", vertical="center") fc.border = border_thin("BFBFBF") ws.row_dimensions[r].height = 18 # ── Freeze top 2 rows ────────────────────────────────────── ws.freeze_panes = "A3" # ── Sheet tab color ──────────────────────────────────────── ws.sheet_properties.tabColor = "1F4E79" out_path = "/tmp/workspace/india-tractor-tree/India_Land_Tractor_Tree.xlsx" wb.save(out_path) print(f"Saved → {out_path}") PYEOF python3 /tmp/workspace/india-tractor-tree/build_tree.py

Your Excel tree visualization is ready. Here is what's inside:

India Land Tractor Tree

Spreadsheet · XLSX


What's in the file

The sheet is structured as a 4-level indented tree, styled like a project/outline view in Excel:
LevelNodeColor
ROOT (L0)India – Land & Agricultural Tractor OverviewDeep Navy
L1Land & Area / Tractors in Use / Swaraj Tractors / Key RatiosBlue / Dark Blue / Gold / Dark Green
L2Sub-categories (agricultural land, market status, model series, ratios)Light Green / Light Orange / Light Amber
L3Leaf details (tractor roles, individual Swaraj models by HP)Pastel shades
Sections covered:
  1. Land & Area - Total 329 Mn ha, Agricultural 180.11 Mn ha, Cropped Area 219.16 Mn ha, Cropping Intensity ~121.7%
  2. Tractors in Use - 8.5-9 Mn fleet, SMAM scheme, three mechanization roles (ploughing, implements, transport)
  3. Swaraj Tractors - 18.7% market share, HP range 15-75, FE Series, 6 model highlights from 17 HP to 63 HP
  4. Key Ratios - ~50 tractors per 1,000 ha, ag land %, Swaraj's estimated fleet (~1.6-1.7 Mn units)
Formatting features:
  • Frozen top 2 rows (header + subtitle always visible while scrolling)
  • Color-coded indent guides in columns A-D
  • Merged label cells that visually convey hierarchy depth
  • Navy sheet tab for quick identification

I need image

Generating Image

A professional tree hierarchy infographic visualization titled "India – Land & Agricultural Tractor Ecosystem". The tree flows top-down with the following structure: ROOT (top center, dark navy box): "🌏 INDIA – Land & Tractor Overview | 329 Million Hectares" Three main L1 branches below it connected by lines: 1. Left branch (blue box): "📐 LAND & AREA" 2. Center branch (dark blue box): "🚜 TRACTORS IN USE" 3. Right branch (gold/amber box): "⭐ SWARAJ TRACTORS" Under LAND & AREA (green leaf boxes): - Total Geographical Area: 329 Mn ha - Agricultural Land: ~180 Mn ha (54.7%) - Total Cropped Area: ~219 Mn ha - Non-Agricultural Land: ~149 Mn ha - Cropping Intensity: ~121.7% Under TRACTORS IN USE (orange leaf boxes): - Total Fleet: 8.5–9 Million Units - World's Largest Market & Producer - SMAM Government Scheme - Deep Ploughing & Mechanization - Harvest Transport Under SWARAJ TRACTORS (yellow leaf boxes): - Market Share: ~18.7% - HP Range: 15 HP – 75 HP - Flagship: FE Series - Models: 717, 735 FE, 744 FE, 855 FE, 963 FE - Target: Small & Marginal Farmers Bottom summary bar (dark green): "Key Ratio: ~50 tractors per 1,000 ha agricultural land | Swaraj Fleet: ~1.6–1.7 Mn units" Clean white background, professional corporate style, bold fonts, color-coded boxes matching each branch, connecting lines in grey, icons for each section.

Here is your tree visualization image:
India Land & Tractor Tree Hierarchy
The infographic shows the full top-down tree with:
  • ROOT - India overview (329 Mn ha)
  • 3 main branches - Land & Area (blue), Tractors in Use (orange), Swaraj Tractors (gold)
  • Leaf nodes under each branch with all key figures
  • Summary bar at the bottom with key ratios
Let me know if you'd like any changes - different colors, layout direction (left-to-right), more detail on any branch, or a different style!
This is a shared conversation. Sign in to Orris to start your own chat.