Graphviz [outputorder=edgesfirst] does not seem to work - visualization
I am visualizing a graph with graphviz's sfdp. But the edges are covering the node, which is annoying. I added this attribute [outputorder=edgesfirst] to the graph but it does not seem to work.
Output:
Source:
digraph G {
graph [overlap=false][outputorder=edgesfirst];
0;
1;
2;
3;
.....
330;
331;
0->18 [color=red];
0->325 [style=invis];
2->3 [dir=none];
.....
331->330 [color=red];
}
If you set the node's style to filled and add a fillcolor of white, you'll get the nodes appearing on top of the edges.
digraph G {
graph [overlap=false outputorder=edgesfirst];
node [style=filled fillcolor=white];
0->18 [color=red];
0->325 [style=invis];
2->3 [dir=none];
.....
331->330 [color=red];
Related
Combine Graphs in Networkx: Adding Graphs as Daughter Nodes
I have two Graphs. Graph_1 is a Directed Acyclic Graph (DAG) which has the following edge list in df_1: node_1 node_2 John Charity John Constantine Gordon John Gordon Nick Graph_1 = nx.from_pandas_edgelist(df_1, source="node_1", target="node_2", create_using=nx.DiGraph()) Graph_2 is a random stochastic graph which is generated as follows: Graph_2 = nx.erdos_renyi_graph(1000, 0.1) I would like to join Graph_2 to Graph_1 by making the node with the highest betweenness centrality in Graph_2 a child node of the "Nick" node in Graph_1. Does anyone have any ideas on how I could do this?
Following should work import networkx as nx import matplotlib.pylab as pl edge_list = [ ["John", "Charity"], ["John", "Constantine"], ["Gordon", "John"], ["Gordon", "Nick"], ] Graph_1 = nx.from_edgelist(edge_list, create_using=nx.DiGraph()) # reduced the number for visualization Graph_2 = nx.erdos_renyi_graph(10, 0.1) node_with_highest_betweenness_centrality = max(nx.betweenness_centrality(Graph_2).items(), key=lambda x: x[1])[0] joined_graph = nx.DiGraph(Graph_1) joined_graph.add_edges_from(Graph_2.edges()) # not sure which direction you want joined_graph.add_edge(node_with_highest_betweenness_centrality, "Nick") nx.draw(joined_graph, with_labels=True) pl.show()
Customized coloring for grouped bar graph
clear clc a = [0.4152 0.4659 0.506 0.5494 0.5676 ;0.371 0.4171 0.4649 0.5209 0.5414 ;0.2612 0.2681 0.2701 0.2751 0.2811] b = [0.3976 0.449 0.4951 0.5494 0.5676 ;0.342 0.4057 0.4629 0.5701 0.5342 ;0.2796 0.2842 0.2911 0.2939 0.2989] c=[0.3856 0.4397 0.5348 0.5374 0.5562 ;0.3352 0.3975 0.4557 0.5087 0.5286 ;0.284 0.2928 0.2991 0.301 0.3059] od = [a,b,c]; % Original Data d = categorical(["app" "bnn" "orng"]); d = reordercats(d,{'app' 'bnn' 'orng'}); bar(d,od,'grouped') Basically I want three different colors (and not shades) for three rows of od. Please help. I am using MATLAB R2017(a).
Quiver list and labeling vectors of my inputs u,d, and r
How do I label each vector of each input component, say u$_1$..., d$_1$..., on my graph at each vector's respective starting point. I want to see if there is a clustering of certain vectors like u$_30$-u$_50$ are all near each other, for example. Here is my code: fx = [1.01, 1.0165376460248143, 1.016585505356985,... 1.0166786731186357, 1.0166445649045002, 1.01684528204491,... 1.0168363943981442, 1.0169505828006045, 1.0169903647693619,... 1.0170588800755562, 1.0170214556321182, 1.0171007103163394,... 1.0170611565299144, 1.0171737504115423, 1.0171325089936156,... 1.0173884633568437, 1.0173821295549914, 1.017540453473392,... 1.0176091468862674, 1.0177647297690604, 1.017711866139699,... 1.0177536635811828, 1.0178254876275734, 1.0173994306983212,... 1.0200331803664529, 1.0232411092365432, 1.0232773133875106,... 1.023383936276914, 1.0233275057530007, 1.023510835824228,... 1.0234461433923472, 1.023507118352957, 1.0237210297124908,... 1.0236390252916325, 1.0237007559499636, 1.0239084387662698,... 1.0238131746118633, 1.024266374303865, 1.024212732428539,... 1.02440393427416, 1.0245390401237269, 1.0252178000353167,... 1.0252021019242434, 1.0275875709904758, 1.0275871039342042]; fy = [0.99, 0.99, 0.9899194500620327, 0.9897134368447225,... 0.9899339650105077, 0.9895259027418399, 0.9898115223446341,... 0.9896762515189842, 0.9896129792784014, 0.9894766621994305,... 0.9896189382715079, 0.9894614440540032, 0.9896292673356496,... 0.9894095770062209, 0.989655005387203, 0.9892019096930893,... 0.9894189058876284, 0.9892732425545386, 0.9891916768216495,... 0.9889512723219249, 0.9892071461243063, 0.9891515372181835,... 0.9890346980816267, 0.9901802532401042, 0.9892771992437573,... 0.9881487558751526, 0.9880037699743045, 0.9875669935217211,... 0.9878502051001951, 0.9872010568874899, 0.9875329139453003,... 0.9873775054641964, 0.9868251990627905, 0.9871082986923524,... 0.9869819983991632, 0.9865548473263468, 0.9867867860622922,... 0.9859765136441385, 0.9861731333993694, 0.9859212446482857,... 0.9857475603282838, 0.9848759880952044, 0.9850648602644492,... 0.9821891156159342, 0.9822254068452594]; fz =[0.01, -0.0014683388934621459, -0.0028093690242636917,... -0.006255424514110392, -0.002405171080788649, -0.009167776104980133,... 0.0003750210183572269, -0.001823375333180016, -0.002906415137850454,... -0.005227263048381278, -0.0028662319950483552, -0.0055329993182467365,... -0.0027458980004112996, -0.00644276568444028, -0.00226410433801184,... -0.009832266892691467, 0.0012478354917326469, -0.001163969711179093,... -0.0026270200357900887, -0.006946260715800828, -0.00188587841967576,... -0.002880843788516535, -0.0049636661241180685, 0.015586949435911355,... 0.010368914010693711, -0.0010649331940053245, -0.002328942248654949,... -0.006634620630021168, -0.0020052485893380344, -0.008543368794125199,... -0.00044976575279103564, -0.0019790036016751333, -0.008330963679008077,... -0.0006481277669472506, -0.0020539789179887767, -0.0075781311330381336,... -0.001294365366809558, -0.011629381859506432, 0.003447063734076782,... 0.0011256038145771368, -0.0008637305140054806, -0.012865086502170518,... 0.005283762238371167, -0.016926299226379265, 0.011993515880473204]; x = [1.01, 1.0165376460248143, 1.016585505356985, 1.0166786731186357,... 1.0166445649045002, 1.01684528204491, 1.0168363943981442,... 1.0169505828006045, 1.0169903647693619, 1.0170588800755562,... 1.0170214556321182, 1.0171007103163394, 1.0170611565299144,... 1.0171737504115423, 1.0171325089936156, 1.0173884633568437,... 1.0173821295549914, 1.017540453473392, 1.0176091468862674,... 1.0177647297690604, 1.017711866139699, 1.0177536635811828,... 1.0178254876275734, 1.0173994306983212, 1.0200331803664529,... 1.0232411092365432, 1.0232773133875106, 1.023383936276914,... 1.0233275057530007, 1.023510835824228, 1.0234461433923472,... 1.023507118352957, 1.0237210297124908, 1.0236390252916325,... 1.0237007559499636, 1.0239084387662698, 1.0238131746118633,... 1.024266374303865, 1.024212732428539, 1.02440393427416,... 1.0245390401237269, 1.0252178000353167, 1.0252021019242434,... 1.0275875709904758, 1.0275871039342042]; y = [0.99, 0.99, 0.9899194500620327, 0.9897134368447225,... 0.9899339650105077, 0.9895259027418399, 0.9898115223446341,... 0.9896762515189842, 0.9896129792784014, 0.9894766621994305,... 0.9896189382715079, 0.9894614440540032, 0.9896292673356496,... 0.9894095770062209, 0.989655005387203, 0.9892019096930893,... 0.9894189058876284, 0.9892732425545386, 0.9891916768216495,... 0.9889512723219249, 0.9892071461243063, 0.9891515372181835,... 0.9890346980816267, 0.9901802532401042, 0.9892771992437573,... 0.9881487558751526, 0.9880037699743045, 0.9875669935217211,... 0.9878502051001951, 0.9872010568874899, 0.9875329139453003,... 0.9873775054641964, 0.9868251990627905, 0.9871082986923524,... 0.9869819983991632, 0.9865548473263468, 0.9867867860622922,... 0.9859765136441385, 0.9861731333993694, 0.9859212446482857,... 0.9857475603282838, 0.9848759880952044, 0.9850648602644492,... 0.9821891156159342, 0.9822254068452594]; z =[0.01, -0.0014683388934621459, -0.0028093690242636917,... -0.006255424514110392, -0.002405171080788649, -0.009167776104980133,... 0.0003750210183572269, -0.001823375333180016, -0.002906415137850454,... -0.005227263048381278, -0.0028662319950483552, -0.0055329993182467365,... -0.0027458980004112996, -0.00644276568444028, -0.00226410433801184,... -0.009832266892691467, 0.0012478354917326469, -0.001163969711179093,... -0.0026270200357900887, -0.006946260715800828, -0.00188587841967576,... -0.002880843788516535, -0.0049636661241180685, 0.015586949435911355,... 0.010368914010693711, -0.0010649331940053245, -0.002328942248654949,... -0.006634620630021168, -0.0020052485893380344, -0.008543368794125199,... -0.00044976575279103564, -0.0019790036016751333, -0.008330963679008077,... -0.0006481277669472506, -0.0020539789179887767, -0.0075781311330381336,... -0.001294365366809558, -0.011629381859506432, 0.003447063734076782,... 0.0011256038145771368, -0.0008637305140054806, -0.012865086502170518,... 0.005283762238371167, -0.016926299226379265, 0.011993515880473204]; figure q = quiver3(fx,fy,fz,x,y,z) The problem is that I want to label the starting point of each vector:
You can use text: q = quiver3(fx,fy,fz,x,y,z) text(fx,fy,fz,num2str((1:numel(fx)).')) The first 3 inputs are the coordinates of the label and the next input is a list (column character array or a cell-array) of the labels. I don't understand how your labeling is working (i.e. what is u$_1$ or d$_1$), so I just numbered the vectors from 1 to 45.
Arrow-size in Quiver
I want to increase the arrow size in quiver. Apparently, there isn't such a property in matlab. I tried changing the following in quiver.m % Arrow head parameters %alpha = 0.33; % Size of arrow head relative to the length of the vector %beta = 0.33; % Width of the base of the arrow head relative to the length alpha = 100000050.5; beta = 0.5; autoscale = 0; % Autoscale if ~= 0 then scale by this. plotarrows = 1; % Plot arrows But it shows no effect. Please use the following example for one of the above curved line. Reproducible example: Data: K>> xcor_i, ycor_i xcor_i = -41.9777 -41.9777 -41.9777 -41.9777 -41.9778 -41.9780 -41.9786 -41.9801 -41.9833 -41.9894 -42.0001 -42.0180 -42.0462 -42.0888 -42.1509 -42.2382 -42.3575 -42.5163 -42.7230 -42.9862 -43.3151 -43.7191 -44.2070 -44.7877 -45.4689 -46.2574 -47.1585 -48.1762 -49.3125 -50.5676 -51.9399 -53.4262 -55.0215 -56.7195 -58.5131 -60.3942 -62.3547 -64.3866 -66.4821 -68.6343 -70.8372 -73.0858 -75.3760 -77.7045 -80.0689 -82.4667 -84.8956 -87.3524 -89.8334 -92.3332 -94.8451 -97.3606 -99.8694 -102.3593 -104.8170 -107.2277 -109.5757 -111.8454 -114.0213 -116.0888 -118.0353 -119.8499 -121.5249 -123.0557 -124.4415 -125.6852 -126.7938 -127.7782 -128.6532 -129.4366 -130.1496 -130.8154 -131.4592 -132.1069 -132.7845 -133.5170 -134.3276 -135.2369 -136.2618 -137.4148 -138.7034 -140.1298 ycor_i = -14.2165 -14.2165 -14.2165 -14.2165 -14.2166 -14.2167 -14.2172 -14.2183 -14.2204 -14.2245 -14.2315 -14.2430 -14.2606 -14.2866 -14.3235 -14.3742 -14.4417 -14.5296 -14.6411 -14.7797 -14.9487 -15.1511 -15.3895 -15.6657 -15.9813 -16.3369 -16.7324 -17.1672 -17.6399 -18.1484 -18.6901 -19.2620 -19.8604 -20.4815 -21.1211 -21.7749 -22.4386 -23.1078 -23.7785 -24.4469 -25.1094 -25.7626 -26.4037 -27.0299 -27.6391 -28.2298 -28.8014 -29.3543 -29.8905 -30.4131 -30.9272 -31.4388 -31.9555 -32.4856 -33.0377 -33.6205 -34.2420 -34.9091 -35.6278 -36.4023 -37.2352 -38.1276 -39.0788 -40.0868 -41.1479 -42.2574 -43.4099 -44.5989 -45.8179 -47.0600 -48.3185 -49.5871 -50.8597 -52.1303 -53.3934 -54.6435 -55.8751 -57.0827 -58.2606 -59.4031 -60.5046 -61.5596 Code: vx=diff(xcor_i); vy=diff(ycor_i); goal_vec_x=xcor_i(2:end); goal_vec_y=ycor_i(2:end); quiver(goal_vec_x,goal_vec_y,vx,vy,'LineWidth',0.5,'MaxHeadSize',100000,'AutoScale','off');
Plot a V-shape function given its points
I have the following matrix which rows are points sampled from a function f = [ -3.7850 -11.5240 -3.7753 -11.4822 -3.7680 -11.5427 -3.7592 -11.5607 -3.7576 -11.5461 -3.7454 -11.5887 -3.7386 -11.4070 -3.7358 -11.4450 -3.7289 -11.5511 -3.7254 -11.3713 -3.7122 -11.4515 -3.6820 -11.5582 -3.6758 -11.5946 -3.6732 -11.5823 -3.6679 -11.6365 -3.6487 -11.3525 -3.6424 -11.2745 -3.6322 -11.3478 -3.6235 -11.6379 -3.6159 -11.6308 -3.5619 -11.1980 -3.5550 -11.2284 -3.5544 -11.5925 -3.5147 -11.6578 -3.5041 -11.6756 -3.4860 -11.1550 -3.4654 -11.6341 -3.4550 -11.1329 -3.3802 -11.6701 -3.3691 -11.1083 -3.3541 -11.0790 -3.3485 -11.5887 -3.3006 -11.6384 -3.2481 -11.5570 -3.2459 -11.0268 -3.2441 -10.9314 -3.2301 -11.5225 -3.2270 -10.8832 -3.1543 -10.8612 -3.1528 -11.5490 -3.1167 -11.5021 -3.1102 -10.8255 -3.0645 -11.5618 -2.9967 -11.5420 -2.9898 -10.8136 -2.9645 -10.7107 -2.9211 -11.4197 -2.9175 -10.6389 -2.8558 -10.6015 -2.8327 -11.5108 -2.7768 -11.4501 -2.7392 -10.5492 -2.7217 -11.4230 -2.6988 -10.4724 -2.6235 -11.3226 -2.6196 -11.3806 -2.5772 -10.4518 -2.5458 -10.4317 -2.5014 -10.3176 -2.4832 -11.3822 -2.4778 -10.2456 -2.4029 -11.2907 -2.3723 -10.3002 -2.3590 -11.2911 -2.3491 -10.2110 -2.2756 -11.2318 -2.2554 -10.1204 -2.2542 -10.1411 -2.2181 -11.2300 -2.1982 -9.9584 -2.1645 -9.7938 -2.1541 -11.1682 -2.1476 -9.8235 -2.1451 -9.9205 -2.1280 -10.0064 -2.1269 -9.8947 -2.0898 -9.7926 -2.0781 -11.1293 -1.9985 -11.0985 -1.9249 -11.0443 -1.8220 -11.0419 -1.7359 -11.0043 -1.6924 -10.9775 -1.6049 -10.9579 -1.5275 -10.9339 -1.4757 -10.9113 -1.4122 -10.8854 -1.3245 -10.8908 -1.2936 -10.7893 -1.2091 -10.8121 -1.1575 -10.8064 -1.1237 -10.7105 -1.0571 -10.7724 -1.0217 -10.7096 -0.9717 -10.6984 -0.9447 -10.7103 -0.9120 -10.6687 -0.8908 -10.6670] Plotting by plot(f(:,1),f(:,2),'+') it is clear that the function has a V-shape. However, I need to plot it continuously, but doing plot(f(:,1),f(:,2)) results in a zig-zag function. How can I plot the points as I want to? (beside sorting them manually)
You could try rotating your data, sorting it and rotating it back. e.g: theta = -1; R = [cos(theta) -sin(theta);sin(theta) cos(theta)]; f2 = f*R; f3 = sortrows(f2); f4 = f3*R'; plot(f4(:,1),f4(:,2),'-',f(:,1),f(:,2),'+') You can tweak theta to change the angle, which affects the sort order, I just took a guess that -1 is about right.