diff --git a/css/main.css b/css/main.css
index 32a5c3243403a21455c6ab05c84c721eb32232c1..1f16378315f2aace1cdaab6dca94ccf255f93d86 100644
--- a/css/main.css
+++ b/css/main.css
@@ -6,6 +6,13 @@ body {
     background: #9a9a9a;
 }
 
+@media (min-width: 1080px) {
+    body {
+        margin-left: 15%;
+        margin-right: 15%;
+    }
+}
+
 .title {
     display: block;
     font-size: 2em;
@@ -18,14 +25,22 @@ body {
     border-radius: 1em 0px 0px 0px;
 }
 
-img {
+img, object {
     width: 100%;
     height: auto;
     box-shadow: 1px 2px 6px 0px black;
     border-radius: 5px;
 }
 
-img[src=""] {
+object {
+    background-color: white;
+    min-height: 520px;
+    width: calc(100% - calc(50% - 250px));
+    overflow-x: hidden;
+    padding-left: calc(50% - 250px);
+}
+
+img[src=""], object[data=""] {
     display: none;
 }
 
@@ -39,5 +54,5 @@ img[src=""] {
 
 select, button {
     padding: 3px;
-    width: 25%;
+    width: 200px;
 }
\ No newline at end of file
diff --git a/index.html b/index.html
index 303fa496ca63ef4af1489caf2a0f6abb81a970d2..6b4f7c101b82accb0746f9183ae9241c16a7e4d5 100644
--- a/index.html
+++ b/index.html
@@ -30,6 +30,23 @@
         </div>
         <img id="comp" src=""/>
       </div>
+      <div class="layout-item" layout-name="Influence Graph">
+        <div class="title">Influence Graph</div>
+        <div class="comp-settings">
+          Show
+          <select name="ig-v" id="ig-v">
+            <option value="">--Please choose variable--</option>
+          </select>
+          influence graph at depth
+          <select name="ig-d" id="ig-d">
+            <option value="1">1</option>
+            <option value="2" selected>2</option>
+            <option value="3">3</option>
+          </select>
+          <button id="showgraph">GO</button>
+        </div>
+        <object id="ig" data="" type="text/html"></object>
+      </div>
     </div>
   </body>
 </html>
\ No newline at end of file
diff --git a/js/main.js b/js/main.js
index d79c218a478561a86f562a0b0d6e458ba75c1dc3..a1086f3be437da87e55d4b327da7e259d9664dad 100644
--- a/js/main.js
+++ b/js/main.js
@@ -20,6 +20,7 @@ function connect() {
         if (data.type == "variables") {
             let va = '<option value="">--Please choose variable A--</option>';
             let vb = '<option value="">--Please choose variable B--</option>';
+            let v = '<option value="">--Please choose variable--</option>';
             
             let ini = data.data.ini;
             for (let k = 0; k < ini.length; k++) {
@@ -30,14 +31,18 @@ function connect() {
             for (let k = 0; k < vars.length; k++) {
                 va += `<option value="${vars[k].name}">${vars[k].name} (${vars[k].definition})</option>`;
                 vb += `<option value="${vars[k].name}">${vars[k].name} (${vars[k].definition})</option>`;
+                v  += `<option value="${vars[k].name}">${vars[k].name} (${vars[k].definition})</option>`;
             }
             document.getElementById('comp-va').innerHTML = va;
             document.getElementById('comp-vb').innerHTML = vb;
+            document.getElementById('ig-v').innerHTML = v;
             backend.init();
         } else if (data.type == "img") {
             document.getElementById('world').src = data.data;
         } else if (data.type == "imgcmp") {
             document.getElementById('comp').src = data.data;
+        } else if (data.type == "igraph") {
+            document.getElementById('ig').data = data.data;
         }
     })
     websocket.addEventListener("open", () => {
@@ -64,4 +69,12 @@ document.getElementById('compare').addEventListener('click', () => {
     if (va != "" && vb != "") {
         send(JSON.stringify({type: 'compare', va: va, vb: vb}));
     }
+})
+
+document.getElementById('showgraph').addEventListener('click', () => {
+    let v = document.getElementById('ig-v').value;
+    let d = document.getElementById('ig-d').value;
+    if (v != "" && d != "") {
+        send(JSON.stringify({type: 'igraph', v: [v], depth: parseInt(d)}));
+    }
 })
\ No newline at end of file
diff --git a/worldsim.py b/worldsim.py
index 74e640630cb6de80242acb9997b31c32b9af0f1f..51daab1e8b7b177acd0bc7aec55c6c96a4ecfef3 100644
--- a/worldsim.py
+++ b/worldsim.py
@@ -59,6 +59,11 @@ class World:
         self.w.plot([va, vb], rescale=True, title='Comparison between {} and {}'.format(va, vb))
         plt.savefig('cmp-{}.png'.format(name), bbox_inches='tight')
 
+    def graph(self, name, v, depth):
+        w = World3(1)
+        w.run()
+        w.show_influence_graph(variables=v, depth = depth).show('ig-{}.html'.format(name))
+
 clients = {}
 async def handler(websocket):
     print("New client: {}".format(websocket.id))
@@ -78,6 +83,9 @@ async def handler(websocket):
             elif data['type'] == 'compare':
                 clients[websocket.id]['w'].compare(websocket.id, data['va'], data['vb'])
                 await websocket.send(json.dumps({'type': 'imgcmp', 'data': "cmp-{}.png".format(websocket.id)}))
+            elif data['type'] == 'igraph':
+                clients[websocket.id]['w'].graph(websocket.id, data['v'], data['depth'])
+                await websocket.send(json.dumps({'type': 'igraph', 'data': "ig-{}.html".format(websocket.id)}))
             elif data['type'] == 'update':
                 clients[websocket.id]['w'].updateVariable(data['name'], data['value'])
 
@@ -87,6 +95,7 @@ async def handler(websocket):
             del clients[websocket.id]
             os.system('rm -rf wg-{}.png'.format(websocket.id))
             os.system('rm -rf cmp-{}.png'.format(websocket.id))
+            os.system('rm -rf ig-{}.html'.format(websocket.id))
             break
         print(" >{}".format(message))
 
@@ -113,6 +122,7 @@ def thread_wsserver():
 if __name__ == "__main__":
     os.system('rm -rf wg-*.png')
     os.system('rm -rf cmp-*.png')
+    os.system('rm -rf ig-*.html')
 
     server = threading.Thread(target=thread_server)
     server.start()