 So, before I begin the session, I'd like to thank the organizers, especially Nareesh. He has been really, very helpful and he has arranged a wonderful event and I hope you are learning a lot and especially the people sitting here as well as the presenters are learning a lot from you all. And so, I hope that during my presentation I'll also be learning a lot from you all and hopefully you will also get to learn something from me. So, let's start with some information about me. I am Mohammad Aman Khan. I work as a front-end developer in Applied Research Work. It is basically a health-related company. It does stores information related to patients and doctors and the performance of different doctors, helps the payers, the insurance companies with their information and it helps the doctors to find out information about the patients to take care of them and it also does a lot of visualizations of those information. Basically, before we started using D3, we were doing visualizations using high charts and CABU. We were experimenting with Google charts and high stocks also. We were not working till before six months with D3. We had no information about D3 is or how powerful it is. But then I was asked to do some information, some experimentation regarding the other libraries that are present which can do wonderful visualizations. So, before we go into that, we will have to understand what big data actually is and why visualization is that important and how visualization can actually help us or in some places, in some scenarios actually harm us. So, we are basically living in a scenario where we have too much information given to us. But this too much information, the word too much is something which is related. Till a few days back, information that was actually not that much that we have right now seemed to be too much to us. But right now we have, the processors have become very much powerful. We have more storage spaces and we have much more processing speed. The internet speed is getting better, especially in India. And so, the information which was actually too much a few years before is not actually that much right now. So, during this presentation I will be going touching aspects about big data, what actually it means and what are the different categories of big data that we have right now. We will also be focusing on the different types of visualizations that are there. We will try to figure out the different characteristics that are present in the different data by which we can identify which particular type of visualization we should use for that particular data. We will be covering the different types of visualizations that are there and especially that can be used to visualize using D3. And then we will be trying to learn about the different cases that D3 itself provides us. The kind of data binding it actually just with DOM elements and how we can use that in our benefit and use that to visualize the different data. And we will also be going through a different series of demos that we have actually visualized in our website. We will be covering different visualizations related to the healthcare data that we had at hand. We will be using test data for that. We will not be actually showing the actual data, but we will be showing the different visualizations that are out there. So, regarding big data, visualization of data is not something that we have recently started. Even before we had computers, even before we had processing speed, even before we had animations out there, visualization of data used to take place. Even the tables that we use, they are actually visualization of the data that we have at hand and we are trying to figure out what information we have. So, even that is a kind of visualization, but all types of visualizations have their pros and cons. And there might be scenarios where actually the actual visualization that existed in those days were actually better than the visualization that we have right now because when we add too much information to that particular data, we might end up abstracting information that could have been present in that layout, a simpler layout that is there in the table. So, right here that we can see in this small span is a table. It was there in the early 19th century. They started actually keeping a track of tables of health of different people who were dying and tried to figure out how many people were dying out of pain. But in later on as time process in the early 20th century or so, this visualization actually got better and they started using a polar diagram in which the area was being used to identify the types of deaths and there were different categories of deaths. The deaths were actually taking place because of accidents, they were actually taking place because of plagues or different, in different manners, but this visualization was not dynamic. Like if we wanted to see a particular time frame of information, it was not possible to see, but it was still a visualization which conveyed more information that was actually already existing there. And before we had animation, this visualization seemed the best possible way to show that particular data. However, as time progressed in 2011, we represented this exact data in a different way. This is a particular representation that I found online of that particular visualization and we can see that the different types of deaths that were taking place throughout the year and this is a time frame of that particular visualization and we can see that the reds are actually the deaths that were taking place because of wounds, the blacks are actually deaths which we do not know the causes for and the blue are because of preventable causes which could have actually been prevented. And if we just continue with the time frame, we can actually see this effect. So if we want to see the death visualization for a particular month or we want to see how the death is actually going on, we can see that in January the amount of deaths taking place were a lot and they could have actually been prevented. So we get more information that we are actually getting in that static representation that already existed and definitely much more information that we are getting via a particular static table. Similarly, if we see visualization of weather out there before animations and everything existed, we used to visualize the weather using static maps out there but these static maps were not able to convey the weather changes or weather patterns that were taking place throughout the seasons and if they wanted to convey it, they would have to create multiple weather maps and distribute it to other people and that would be really a very cumbersome process but as time moved on and processing speed and the resources that we have at hand the technologies improved, we have created visualizations of weather which are actually much more robust and much more informative than the visualizations already existed. Similarly, here we have a visualization of evolution that we have at hand. Initially we used to, even in our, when we used to study in school, we used to see evolution represented in the form of static pictures and all the trees, whether the ancestry is belonging to a reptile or whether it is belonging to birds, were represented using those static visualizations out there but right now, with so much technology that we have at hand, these visualizations have actually improved and we can actually show a lot more information that we are able to before using these different types of technologies and visualizations that are out there and now coming to big data, one very good example of big data is representing the whole internet connections out there that we have at hand. The internet itself is a world, a world which is separate than our world. We have people, we have representations of ourselves out there, representation of perhaps people would not exist and that itself is a world and if we want to represent that world, it is something of a very big challenge. It is, if we try to visualize it, it will look like a universe to us and this is exactly how it looks like, looks like and this is a very good example of representing big data. Now if these types of visualizations are what we want to portray and we want to portray it in such a manner that we can get the characteristics out of it which we are actually intent to, then conventional ways of representing it in the form of charts or in the form of static diagrams will not be enough and especially if you want to represent it just in the form of tables, then it will not make any sense at all and if data that we have at hand does not make sense to us, it is as good as having no data except for the fact that we can perhaps sell that data to someone else who can make sense of it but it won't be making that much of benefit to us, that much of help to us as it could have had it made a bit of sense. So with that, we try to understand what a good visualization and back visualization actually is. On the left side, we have a visualization of the densities of fishes, fish out there in the sea for different decades and centuries. In 1900, the density as we can see out there was quite large of fish but in 2000, the density has reduced a lot. So if this is the information that we are actually looking for, the density out there in the different seas that we want to figure out, then this is a very good visualization. We can see that the areas that are yellow are quite dense and the blue ones are not that dense and in 2000, we can see that the densities are actually almost missing out there. So we can make sense of it and we can get a lot of information of it. We can find out which regions are actually having the densities of fish and whether they have reduced or not. But if we see the visualization here, which is representing the number of features that Microsoft Word, different versions of Microsoft Word had presented to us, then we'll be able to see a pie chart which does a comparison of traditional features. But there is a lot of other data associated with that feature. For example, those features are not actually features which were given to us in the same timeline. They were not given to us in the same period. So the information regarding the period of that feature is missing. Also the information regarding the actual number of features that were provided or the actual features that were provided is missing. And especially the 3D look of this chart does not give any relevant or more information to us than it would have had it just been a 2D chart. So this is not that good a visualization. So this is very important that if we are trying to visualize something and we choose the wrong type of visualization for it and we end up hiding information which actually made much more sense to the user, then it is as good as not having that visualization. Here is the basic flow chart to understand what all factors that we should keep in mind when we are trying to choose a particular visualization. For example, if the type of data is continuous and it is changing with time and it has a lot of periods, then we are trying to compare the actual differences between the different series that we have at hand, the absolute differences, then we can choose a stacked layout for that visualization. Then we'll be able to compare the absolute values between the different series and we'll also be able to compare the relative components that are present in that particular series. We'll be able to make sense of it. However, if that particular series is too large and it is continuous and it is too much, then if we are actually trying to visualize it and the number of attributes that are there are single, then just a single line chart would have been enough. However, if the data is not continuous and it is discrete and if we do not have too much information at hand, then we should not use a continuous line chart, just bars that we have out here are enough to actually understand that visualization. And if you're trying to visualize a particular series which has actually circular in nature, for example the one which we visualized in the previous slide, the one which had deaths taking place in different seasons and it actually comes back to January, we should use a spiral visualization which actually gives us the interpretation of the cyclic nature of the data. And if we have a third variable attached to the series, if we have x, y and z attached to the series, the data, then we should use that, we should try to visualize that data using the different radiuses that we can give to the bubbles out here. So these are the different types of visualizations. We have different types of visualizations here also. If we are trying to visualize a series which has actually two variables involved and they are discrete in nature, then we can use a bar chart out there. But if we are trying to visualize a data which has only a single variable and we do not need to compare two series, then we can simply use a bar chart. Present in the overall data that exists, then we can use a simple pie chart out there. If we are trying to compare a time series of the different information that exists, then we can use a line chart and we can do a comparison of those different series that are existing out there and we can get a lot of information for it. But if the same data that we need to present is actually not that discrete in nature and we need to do a comparison of the time, then we can use a continuous line chart for it. A scattered chart is used to understand the time distribution of the information that is present at hand and if that particular scattered chart wants another dimension added to it, we can use a bubble chart for it. A 3D chart is used to understand the distribution which has actually three, more than two attributes associated with it and we can use the 3D area to identify the distribution which are actually taking place in the x, y as well as the z-axis. Sacked area is something which I have already discussed and the water form visualization is something which we use when we are actually trying to understand whether there has been an increase in the data available or there has been a decrease and it is used when the time, the nature of the time is discrete in nature and we can actually understand something from it. These are two visualizations that we have actually used in our website. These are advanced visualizations and one of it is a spiral Sanky chart. Sanky chart is basically a visualization where the width of the data represents the amount of flow that is coming out of it and it is dynamic in nature and it is spiral. It can actually be used to represent network flows or some other things. In our case, we have used a circular Sanky chart because it makes sense. We will come to know why when we actually discuss that particular visualization and we had actually drilled down that particular visualization to do a network chart in which we tried to understand relationships between two particular nodes of doctors and the lens actually represented the patients that were interacting with the different doctors and we will talk about it more when we actually go through the demos. Coming to D3, when we are actually working with TABU and high charts and other technologies out there, other visualization related technologies out there, we were actually facing one problem. High charts, Google charts and other visualizations out there were not able to render the large amount of data that we had in an efficient manner and TABU had its drawbacks. The drawback that TABU was giving us actually was the customization of the visualization that we had was not that easy and the rendering of the data was not that smooth. The animations that we wanted to be present in that data to understand how the data is actually changing was not that smooth and we had less control over the data because TABU actually had to export that data in the server. We had to export that data in the server and filtering out there and even for visualizations which were not that complex, it was taking a lot of time to actually get that visualization even if the amount of data presented in the chart was very small. So while going with D3, we were trying to compare different charts, the pros and cons that were associated with the different visualizations and the only con that we figured out D3 had is that it required a lot of programmatic knowledge and for a developer who's actually working in the front-end that is not that much of a big challenge if he's willing to put that effort to get a effective visualization and an impressive visualization. And the main difference between D3 and other visualization tools out there was that D3 actually attaches. It has a concept of attaching data to DOM elements out there. You will not be actually just visualizing data but you will be associating data with particular sections, particular boxes out there, particular divisions out there and then visualizing data irrespective of what that data that is attached to that particular DOM. You do not need to figure out how many bars you need or whether the radius of the particular element has to be big or small. It will only be based on the data that is associated with that particular element. This feature is something that was not present in high charts or Google charts because there we had to actually understand the data on ourselves and we had to manipulate that data to figure out what we need to do with it. Another main advantage that D3 is providing us is that it provides us a lot of existing templates out there. There are a lot of examples out there if you just go through the D3.org site. You will find thousands of examples out there and thousands of templates which are already existing. D3 does not provide templates in which you can actually just pass the data and it will give you a visualization. Some bit of programming is required to get the visualization that you want but there are already existing codes out there which you can just use, reuse it and just manipulate it a bit to get the effect that you want and it will be good enough. For example, the core chart, the network chart that we are using we had to do very minimal changes to the existing codes that were out there to get the visualizations that we actually wanted. Now to understand D3 phases what D3 actually does is that when we try to attach data to some particular element it creates an empty stack of that particular division and it pushes all the data that we want associated with it to that particular stack. Let us see an example out there where the data was actually 4, 8, 15, 16 and 23 and portion of it is the same, 23 and 42 and what it actually did here if we go through the code here is that in this section we are actually trying to enter the data that we want to associate with the particular element. What we did is we did a chart dot select all on dot bars and what this is do, what? You cannot see that right? Can you see it now? What we are actually doing is that we are creating an empty container initially this class did not exist so what it will do is that it will not select anything it will just create an empty container out there and then when we are trying to push that particular data it will put all the data that is there in the variable in the form of a stack and then it will append it to that container and then whatever you want to do with it whether you want to associate it a rectangle or attach a rectangle or a circle with it it will do that. This is the portion in which we are actually attaching or entering that particular data. This is the portion in which we are actually updating that particular data. In this section the rectangles will already be attached and if there are six data that we are adding in that particular element if we are entering six data then there will be six rectangles that will be created in that particular division after we are running this particular portion of the code but they will not have any attributes associated with it they will not have any positions associated with it they will not have any width associated with it so you will not be able to see anything on screen but this is the portion which actually gives the attributes to that particular section the X attribute, the Y attribute to determine the location in which we want to put that data the height and the width actually gives the dimensions of that particular rectangle. This is just a selector this is something which actually makes us understand that D3 is not just a visualization tool it is also used for data manipulation and DOM manipulation so this is exactly like how jQuery selectors work and when we are using D3 selectors it provides us more functionality like this transition function and duration function we will be understanding what those are in short while attributes are very much similar to how jQuery attributes work they will be associating an X attribute to it, a Y attribute to it and a height and a width to it this is something this D is the data that will be associated with that particular rectangle now we have already understood that when we are actually attaching data to it it is also along with the rectangles it is also associating the data that was actually responsible for those rectangles so when we are trying to update that rectangle later on it will actually remember which data was associated with which particular rectangle or which particular figure and then when we are trying to use a function d, i the d represents the data that is associated and the i represents the index of the data based on the original area that I had passed when I was entering that data and using this d and i we can actually pass this particular values to different functions and if we want that X to be dependent on some other function or the transformation function we can do that here I am using an X function which is actually a scale we will be understanding what scales are also recently in a short while and then we are giving a height to it and a width to it the width is constant for all the and they are actually I am just dividing the whole section of the width into different based on the number of elements that I have and I am dividing the whole section into widths and I am just representing that as bar width and I am giving that width to it the height is something that will be dependent on the actual value of that particular bar so that is why I am using this particular value of d here where d is actually the d is actually the value that is associated with that particular rectangle and X is a scale which I have used because when I am trying to actually giving a value of 43 to that particular rectangle the actual value 43 may be too small for that particular screen so we actually want to scale that particular value that we have for that particular rectangle the whole image that we have in that particular graph so that is actually done using the d3 scales out there there are different types of scales the linear scale actually maps a particular range of data X to Y to something else which is specified in the range for example X is mapped to A and Y is mapped to D and what it does internally it interpolates the data that is in between X and Y to the data that is present in between A and B and the next time you try to call that scale with a particular value all that you do is actually call that interpolation and get a particular value for the value that you are actually calling and you will be able to figure out the position so what we are actually doing here in the X is that we are trying to figure out the index of that particular data that we have at hand and we are trying to figure out on which time on which X position we want to put that data and it is dependent on the order of the data that we have at hand that is why we are using I and we have the scale of X that we have is something this we have mapped the data that we have the number of data that we have at hand 0 to the number of data that we have at hand and we have mapped it to 0 to the total width minus bar width of the whole chart why did we have to do a minus bar width because when we are trying to put a position X to it it actually starts from these positions so had we actually used 0 to width in this particular range and if it had started a bar at the end of the chart we will not be able to see that particular bar out there so that is why we had to do a minus width out there and then we use this particular scale to figure out the X indexes out there and then we are using the Y scale in a similar manner to figure out the height and we are using the actual value that is presented that is given to us in the data to figure out the height of that rectangle in a similar way the text is also associated with that particular division of the text and what the actual text will actually be and the exit actually the exit actually removes the data if we are trying to update that data after entering some data at a particular time we want to update that data the new data might actually be larger than the data that was already present in the number of respective to the number of data that were there or it may be smaller than the data that were already there initially we had 10 data that were actually associated with that particular division but later on we had only 5 data associated with it then we will need the exit phase to remove the remaining 5 which are actually extra to be removed from the visualization this is actually achieved by using the D3 data exit and remove functions D3 data exit actually selects the data which need to be exited which are not actually present in the visualization but are being shown and the remove actually removes it from our visualization if we understand it we will try to use these functions the sort descending actually modifies this particular data and sorts this in a descending manner so when we sorted it we can see that the height got modified and now this data is being represented in a descending manner the important thing to understand here is that how did D3 actually understand which bar to alter and modify to give that particular transition because of the nature of the stack that D3 actually follows when we are trying to enter data to it we will understand that when we try to exit a particular column now here intentionally I will be trying to exit the data 23 from this particular visualization and then I will be removing that data 23 the data 23 will actually not be exited what will happen is actually 42 will get removed and 23 will take place you can see that here why did this happen is because of the as I already said stack nature and this is the data that was actually passing and I am trying to exit this particular visualization and what it actually does is that 42 comes in place of 23 so this is how D3 understands which data to exist the first element is 4, second element is 8, third is 15, fourth is 16 fifth element becomes 42 so the fifth element that we had in our visualization which was 23 actually that particular bar becomes 42 and the data which was which actually needs to be exited the bar that actually needs to be exited is the remaining portion of that visualization already existing on the chart which in our case is just 42 so when we exit we become 42 and the remaining extra bar that we had out there will get removed that is one thing that we have understood and we will be going through transition and duration now if we did not have this transition and duration we have not added transition and duration to the text out there and then we try to update we will be able to see a difference because we have not added a transition there is no delay to it we have added a transition to the text that is available and just in a snap it is just updated and is present in the location where it should be however we have added a transition delay to the updation of the bars out there so we can see an interpolation of the path and the attributes that needs to be performed to actually go to the end and 2000 actually means 2 seconds so it actually signifies the total amount of time that it should take that particular amount of time to more than 2000 and we can add there are also other functions associated with transitions out there such as ease which actually signifies how will the end of the transition look like do you want it to speed up initially or do you want it to speed up in the end do you want it to be linear do you want to speed up the transition to be linear throughout these can also be controlled using D3 this was just a basic animation a basic visualization that we created and these types of visualizations can be created not only for bars they can be created for scatter they can be created for bubble charts and they are not too difficult to actually code and there are only three phases that we have to keep in mind the enter update and the exit phase and the only thing that we need to understand is the stacked nature of the data that we are entering we could have also passed data to it in the form of objects and just like I am passing this array of data I could have passed an array of objects to it and instead of calling D I could have just used that particular variable that I want to associate with that particular object and use what attribute I want to use to actually understand the width what attribute I actually want to use to understand the height and because we could have used different parameters associated with that object to determine different attributes associated with that visualization D3 also provides a lot of other features associated with visualization such as D3 dot map which we can actually convert a particular series of data to some other series of data if we want to convert a series of objects to just a linear array or if we want to get rid of particular attributes to it we can do that we can sort data using D3 dot sort and we can define the function that we want to use for sorting I have used a sort function here and what I am doing is here had I not used this function to return B minus A it would have sorted the data in the ascending order but if you want to use our customized way of sorting the data then we have to define a function by which it will determine what particular value to use to understand where in which position the data will be it will always try to figure out the whether the data needs to be sorted or not by using this value if B minus A gives a negative value it will understand that A the present value is smaller than B and it will always try to sort the whole data based on ascending value of these attributes so if it is minus 1 it will understand that the value that I am trying is lesser than the value that is the next attribute and it will try to sort based on this particular attribute this is an example of a D3 layout that is provided to us where we have to do very minimal manipulation to the existing template and what it does is actually takes input a matrix where the square matrix actually where the rows define the categories and the columns define the categories that are mapping to each other and we can see here when we focus on a particular category the arc represents the different categories and the total radius of that arc represents the total data that is associated with that particular associations that are associated to understand this particular code this is an ordinary scale the difference between the linear scale and the ordinary scale is that a linear scale actually interprets data as seeds and it performs calculations too but an ordinary scale just associates values to particular series as and it does not do any interpolation here D3 range actually carries from 0 to 3 and 0 is mapped to this particular color 1 is mapped to this particular color 2 is mapped to this particular color and 3 is mapped to this particular class and we are attaching a particular SVG to the result here using the select attribute and the code groups are actually giving other categories this is the code layout the different edges that are associated to the different and here when we are defining the different the course layout we are present in the nodes function and we are associating the links in the links function this is something that we are getting using this particular CSV in which we have actually associated in the form of JSON to different series time series one is the time series representing the different nodes in which we have just the name of that particular attribute and nothing else and the second thing is the links we are actually describing the source the target and the weightage associated with that particular the weightage can be used for determining the length of that link or other things here the length of that link is fixed as we can see link distance is 60 so it is fixed the charge is also fixed but these can be variable depending on the values that are being passed to that particular data in this video we will try to explain that we are actually implemented in using dummy data this is this is actually a visualization representing the different referrals that are taking place between different categories different specializations we actually had a lot of data and a lot of doctors were transferring patients from themselves to some other doctors and the doctors had specialties associated with it we initially wanted to do this whole visualization in the form of network graph and we couldn't make sense of that data so we decided that we will do it in two phases the first phases will represent the different interactions that are taking place between the different categories out there and this is actually that particular visualization where we can see that the maximum referrals that are coming out from are the internal medicine there is a lot of referrals taking place from internal medicine to radiology and the primary three categories which are actually doing referrals are internal medicine family physician and pediatrics which is visible from this particular section we can also see the number of referrals taking place from internal medicine and family physician is similar we can see that particular graph this is actually signifying that the number of referrals taking place from internal medicine to family medicine is of similar nature and this is the self-referral the amount of referrals that are taking place from other medicine this actually represents that there are no not much referrals taking place from these particular specializations to the other specializations now we will be selecting a few specialities and try to drill them into the network graph which will be representing the different referrals that are taking place within the different doctors we can see the different colors out there the colors represent the different specializations with the different doctors the length, the value on the link actually signifies the number of referrals that are taking place between the different doctors these are the names of the different doctors associated we can also drag the whole cluster to somewhere else and then we can study that particular cluster now in this particular cluster that you can see that these are the doctors these five doctors are doing referrals among each other they are not sending any referrals to someone else now this is something which is very important to understand we will be making a lot of sense based on this data and we will be able to figure out the relationships between the different doctors based on this visualization here we can see that there are only two doctors and they are passing referrals only between each other not to someone else this graph actually represents the comparison between the risk and utilization of the different patients and the doctors that we have out there the first layer represents the PO level that is the institute or organization level and the X axis actually represents the risk or the amount of danger the patient is and the utilization actually represents how much amount of money the patients is actually having to give that for that particular treatment we can see from here that Hawaii IPA this is not actually a real based on real data but just a mock data and here we can see that the patients that are associated with this particular organization have relatively less risk but the amount of cost that they are having to pay for is relatively very high we can try to drill down into a particular level and then we will be able to see the doctor view so here we are representing the different doctors out there we can see that these two doctors are performing quite well but this particular doctor is the risk is less than one pretty much less than one and the utilization is very high so we drill down to that particular doctor to find out the patients utilization so that we can give suggestions to those doctors to focus on those patients and these are the this section actually gives us those patients so there are quite a few patients out there we have which we have which have very less risk but very high utilization and then we can using this particular data suggest to the doctor associated to take care of those particular patients and this is for one particular quarter and we can change the quarter also to understand what will be the risk versus cost utilization visualization for some particular some other time and then we can by clicking on those particular tabs drill down go back to a previous level and then we can proceed on with the same so along with that we have also done other visualizations associated I have not created demos for that but we have tried to do visualizations of medications out there what we have done is a patient may be having medications for a long time and there might be cases where actually missing out on medications so for the doctor to understand that particular scenario he has to see a timeline and he will be able to see red bars out there in between the different tabs to figure out that if there is a particular time in which the person was not having the medication he was supposed to be and we have also done a visualization of the vitals that are associated with that particular patient the vitals means the temperature the weight the height that patient has in a particular encounter and we record that and we visualize those particular vitals in the form of line charts and if a particular vital is beyond the expected ring we show those particular vitals in the form of red color so that the doctor can usually see and figure out that that particular vital was something which was bad with that I would like to come to the end of my presentation and if you have any questions regarding the visualization that I have presented or anything related to this please go ahead yes two things first of all the number of down elements dependent upon the data that you are actually transferring to the client side so that is why we actually did two phases of visualizations where the first phase was actually dealing only with categories and we were allowing drill downs only for a particular number of categories we cannot visualize the whole data and if we wanted to visualize the whole data in a particular glance it wouldn't make much sense also one thing is that for these visualizations I have used SVG to actually do the visualization so that I can make interactions with that particular element but if we do not want any interactions associated with that particular element but if we just want the visualization we can use canvas and then the number of down elements will be much less here right yeah actually D3 allows a lot of data manipulation with the association charts it has the map function which I said that if you pass a particular data that is provided to you you can actually manipulate it to something else you can actually sort it you can actually if you have an object which has too many attributes associated with it and if you do not want that attribute or if you want to manipulate a particular attribute to something else then you can do it using the D3.map function and there are if you have a particular layout of data if it is in the form of JS and if it is in the form of CSV there are a lot of functions out there which actually do that and in my particular demo for the force layout I had used yes you can what you can do is actually combine the visualization that you have in R with some visualization which exists in D3 and all the interactions that you want to associate with that particular data or if the particular section where we want to we want the visualization to look pretty or actually the visualization the transitions will look good you can use D3 for that visualization but if there is some static visualization something which is not that visually important then you can do it with R something which requires a lot of processing and then combine those data. Tabu is actually provide that there are examples out there which actually combine Tabu with the visualizations using D3 and the output is really good and I have heard with my fellow associates in my company that Tabu also will be perhaps in future doing his own visualization using with the help of D3 you had a question the main reason that the whole process of actually visualization becomes complicated to use D3 is D3 actually gives the whole by stack. Tabu gives the whole by stack it provides the place to store the data, manipulation of the data and it provides the visualization also so there are tools which actually doing that zoom data is an example of that something which is similar to Tabu but does the implementation using D3 and has something related to sharpening of data like if we are when we are trying to visualize data which is too big or too huge what is actually initially shows is a faded form of that data where nothing is relevant you can see but you cannot actually deal with that particular data and then as you give it more time give it a few more seconds the sharpening of the data takes place and you can manipulate that particular data so yes there are tools which are actually using D3 as a library and creating a wrapper library of their own or wrapper tool of their own and providing things that are there in Tabu but I think there should be you want to communicate where the transition is taking place so the reason that these transitions are actually drilling down a particular element or changing the year it was slow or there was a loading out there it would not be communicating so with every transition that I was doing I was actually doing an Ajax fetching the data that I wanted and had I not been doing that I would have had to associated all the data that is present to the client and Ajax for it so I am communicating with the server anything else so basically if you want to if you want to do some complex visualizations and visualizations of a certain nature which we do not have templates for in Tabu or in high charts and Google charts and all the other charts actually provide us templates and we can pass that data and they will give the visualization but that visualization may not be something that we want and we cannot do actually animations that we want out of it we cannot do drill downs on that particular and if you want to do drill down we will have to create the whole chart again we do not have the concept of binding data when there is a transition you can see that which particular element is changing to something else but that is something D3 provides and what we wanted to do is complex visualizations or big data and if you want to visualize big data with high charts or Google charts they simply won't work they take a lot of time and even after rendering the whole screen lands but with D3 and attaching the data to the particular DOM you can see that even complex charts of chords and network layouts and the amount of time that was taken was because of the Ajax call to get the fetched data and if we have the data then the rendering process is really very easy, the interactions are really great and the user experience is really nice when we are trying to change a particular time frame or drill down into particular visualization it actually makes sense which was not making sense for high charts and Google charts and for Tabu Tabu just said that he would add a filter for him and this is what he would do Thank you