Тёмный
Curran Kelleher
Curran Kelleher
Curran Kelleher
Подписаться
Data visualization enthusiast
VizHub AI Demo:Circles with Canvas
0:31
28 дней назад
Sparkline Part 1 - Static
40:30
Месяц назад
Label Filtering Algorithm
24:41
Месяц назад
Pseudo Line Chart with D3.js
10:28
Месяц назад
Intro to Coding for Kids
4:32
2 месяца назад
Introduction to VizHub
11:46
2 месяца назад
Using Packages in VizHub
4:22
2 месяца назад
VizHub as Dataviz CMS
12:04
2 месяца назад
Source Code Circle Pack Livestream
1:07:18
3 месяца назад
D3 Grouped Selections
11:39
3 месяца назад
Submarine Cables Globe
17:41
4 месяца назад
Interactive Stacked Bar Chart
33:33
4 месяца назад
Multiple Menus with D3
15:02
5 месяцев назад
Menu with D3
6:45
5 месяцев назад
Common UI Elements with D3
10:30
5 месяцев назад
Globe with Panning and Zooming
14:18
5 месяцев назад
Custom Axes for Parallel Coordinates
6:03
5 месяцев назад
Ordinal Brushing
2:47
5 месяцев назад
Parallel Coordinates with Brushing
31:41
5 месяцев назад
Draggable Circles with Voronoi Overlay
6:27
6 месяцев назад
Brushing Circles with D3-Brush
15:08
6 месяцев назад
Zoomable Circles with D3-Zoom
6:34
6 месяцев назад
Draggable Circles with D3-Drag
14:38
6 месяцев назад
Line Chart With Multiple Lines Viz
16:04
6 месяцев назад
Line Chart With Multiple Lines Data Prep
8:10
6 месяцев назад
Animation with Hot Reloading
18:37
6 месяцев назад
Migrating for Hot Reloading
7:32
6 месяцев назад
Комментарии
@wahoobeans
@wahoobeans 6 дней назад
Thanks. This is good. However I am getting stuck on the next step: When I am zoomed in, I want to modify a specific circles size. But then the circle gets all weird after the next zoom event. I haven’t figured that out yet. Ykwim?
@20daqoqah
@20daqoqah 8 дней назад
Hi Curran, I was really impressed by your presentation from about three years ago, where you broke down a lengthy piece of code and refactored it into modules and functions, focusing on Separation of Concerns. It was fascinating! Could you create a new video where you expand on that topic? I'd also love to hear about any best practices you've picked up while developing apps. Thanks a lot!
@Ayoubased
@Ayoubased 9 дней назад
I dont understand how the correlation between the x data and the y data work, because when we make seperate xValue and yValue variable, it shouldnt be something that gives a direct correlation. Im not understanding this well. and since the Data for the date is for every hour, why did D3 choose to showcase days as labels in the x Axis label? Thank you for the video again.
@memeskakarobarrajput8663
@memeskakarobarrajput8663 10 дней назад
Abe dashera nave patel nagarcha devi visarjan vhe 😅😅
@oooshafiqooo
@oooshafiqooo 14 дней назад
how to turn Categorical colours to Continuous colours?
@currankelleher
@currankelleher 13 дней назад
@@oooshafiqooo interpolateCubehelix
@oooshafiqooo
@oooshafiqooo 13 дней назад
@@currankelleher mhm
@FrankDawsonTV
@FrankDawsonTV 15 дней назад
Nicely explained, thank you.
@johnomar4053
@johnomar4053 22 дня назад
Thank you very much. Well appreciated.
@johnomar4053
@johnomar4053 22 дня назад
Hello there Curran. Been waiting for part 2 of this video. Please upload. I am your fan. Can't wait to learn about the bisectors ... how to move the line. Thanks in advance.
@currankelleher
@currankelleher 22 дня назад
Part 2 is already uploaded and linked in the description. Enjoy!
@johnomar4053
@johnomar4053 22 дня назад
@@currankelleher Thank you very much for uploading. I had seen it previously, but it was still reserved fro members. I have appreciated.
@johnomar4053
@johnomar4053 22 дня назад
for not fro
@AlexisK558
@AlexisK558 29 дней назад
Hi Curran Thank you for all the videos and resources you have created and made available to all. They are great at understanding d3. I am a developer but have no experience in the frontend. I was wondering if you have a video just giving an overview of what is "state" is that your passing into the main method and how would you export a project that uses this from vizhub to a project using HTML, CSS & JS Again thank you for the work you have pu into these videos/tutorials
@currankelleher
@currankelleher 28 дней назад
@@AlexisK558 Yes! The early videos in the Constructing Visualizations explain this. See also d3-rosetta in my GitHub, which has examples of how to define state in vanilla JS and also various frameworks. Thanks for asking!
@AlexisK558
@AlexisK558 28 дней назад
@@currankelleher that's great, thanks again :-)
@mwaqze
@mwaqze Месяц назад
This is smimply elegant!
@currankelleher
@currankelleher Месяц назад
@@mwaqze Thanks!
@old_gaffer
@old_gaffer Месяц назад
Really nice stream.I love the pace and showing thinking through problems ad-hoc vs. just having a prepared path like a tutorial.
@currankelleher
@currankelleher Месяц назад
Thanks! I'm glad you enjoyed it. Yeah this was totally unscripted. Real problem solving! I feel like that's great for learners too. I'm debating what sort of format to use for upcoming videos for data visualization course.
@Ayoubased
@Ayoubased Месяц назад
Very beautiful Curran, you remind me of StatQuest alot lol. Very chill and informative. Were you able to figure out why is it very laggy?
@currankelleher
@currankelleher Месяц назад
If you run the example it's not that laggy. I think it's just that the computer was recording AND running the globe so it slowed down. Like I said at the very end, performance could be improved by migrating from SVG to Canvas. It's probably just the slowness of SVG that's the root cause of the lag.
@Ayoubased
@Ayoubased Месяц назад
@@currankelleher yeah okay, idk why but whenever I see some lag I feel like the whole project is invalid since idk how to fix the lag itself lol. thank you for the project tho, very well coded.
@currankelleher
@currankelleher Месяц назад
@@Ayoubased Cool yeah thanks! Modifying this to use Canvas would be a great follow-up video to make. Thanks for your comments!
@jackshephard7920
@jackshephard7920 Месяц назад
Thanks! I leart so many unfamilar util tools ,eg. flatRollup, timeParse, bisector), in D3!
@currankelleher
@currankelleher Месяц назад
Amazing! Glad to hear that.
@RabidAgro
@RabidAgro Месяц назад
HI Curran, thanks so much for all your d3js content, super helpful! I was wondering if you have done any content regarding transitions with d3js + react? For example in your scatter with menus, when the menu changes and the chart renders again.
@currankelleher
@currankelleher Месяц назад
Thanks for this idea! The way I would approach that is using useEffect and then let D3 do the DOM manipulation from there. This would be great for a video!
@huxulm273
@huxulm273 2 месяца назад
it would be better if add some functions to demostrate the data update and exit
@huxulm273
@huxulm273 2 месяца назад
can i use @curran package in local ide?
@currankelleher
@currankelleher 2 месяца назад
Yes! You can use the VizHub export feature, which will set up directories you can use locally with NPM workspaces. Once you have it locally, you can rename or reorganize the files so my name is not there. See github.com/vizhub-core/vite-export-template for an example of how to do this.
@zaiyuvat
@zaiyuvat 2 месяца назад
Boss Level
@beautifulworldvideos6855
@beautifulworldvideos6855 2 месяца назад
A wizard/legend at work, thanks for all the work you do and share. I've learned so much from you. I want to thank you for that. And for VizHub.
@ismailotman6733
@ismailotman6733 2 месяца назад
thank you for all this videos, everything is perfect. please don't stop
@ismailotman6733
@ismailotman6733 3 месяца назад
This is the best channel, thank you very much for these videos.
@EJFox
@EJFox 3 месяца назад
This was so much fun and turned out so cool! Thanks for letting me hang out 🌞
@johnadriandodge
@johnadriandodge 3 месяца назад
WOW!
@maartensnels3804
@maartensnels3804 3 месяца назад
This is what I was looking for ❤
@currankelleher
@currankelleher 3 месяца назад
Amazing! Happy to hear that. Anything else you are looking for?
@ianwright5919
@ianwright5919 3 месяца назад
Thanks @currankelleher, clean and to the point video.
@currankelleher
@currankelleher 3 месяца назад
@@ianwright5919 Thanks!
@FreeComputerTutor
@FreeComputerTutor 4 месяца назад
Hi. I tried to run this with Visual Studio Code on my PC using Node.js, but nothing displays. Do you have any idea what I'm doing wrong?
@currankelleher
@currankelleher 4 месяца назад
See github.com/vizhub-core/vite-export-template
@irfanadamm5819
@irfanadamm5819 4 месяца назад
any chance to have polyheirarchical structure
@currankelleher
@currankelleher 4 месяца назад
Then it becomes a graph data structure, and you can use different layout methods like Sugiyama layered graph drawing, or even force layout! Do you have specific data in mind?
@user-rm4yk3nf8j
@user-rm4yk3nf8j 4 месяца назад
sir do we have to use any other way to plot the map using the json data ?
@currankelleher
@currankelleher 4 месяца назад
You can use JSON data for sure! It just needs to be transformed into a usable data structure that matches with points or areas on a map.
@BrettCooper4702
@BrettCooper4702 4 месяца назад
sad we could not see the changes, video is only updating one every 60 seconds
@donvictoro
@donvictoro 4 месяца назад
Thanks
@pascalvolk
@pascalvolk 4 месяца назад
One would think that Multivariate Choropleth Maps are a pretty common use in gis lol However, it seems quite a complicated process for those who don't know how to code (or are not experienced). I was wondering if there was some type of qgis plugin or tool that simplifies the process to create a trivariate choropleth. p.d. Great example of maps by the way!
@sajadahmadi595
@sajadahmadi595 4 месяца назад
@idiosinkrazijske.rutine
@idiosinkrazijske.rutine 4 месяца назад
Haha nice job with the data!
@maitmetelitsa2908
@maitmetelitsa2908 4 месяца назад
thanks!
@miskaknapek
@miskaknapek 4 месяца назад
thank for more good tutorial videos!
@nicolaspiper3437
@nicolaspiper3437 4 месяца назад
first 😄
@user-ls5jz9nl3h
@user-ls5jz9nl3h 5 месяцев назад
what is the editor used?
@currankelleher
@currankelleher 4 месяца назад
VizHub
@hrtmtbrng5968
@hrtmtbrng5968 5 месяцев назад
I would pass state as an argument to render. The function should not just conquer the global variable without asking. Otherwise you have no benefit of all this exercise. You are still not in control of the state. When you pass the state to the render function, you would also not need hoisting, which in my opinion makes the code a bit unreadable. I would rename the global setState function to setStateAndRender but the function argument of viz not. That makes the two abstraction levels that you have more clear and visible.
@currankelleher
@currankelleher 5 месяцев назад
Thanks for this feedback! I'm happy that you appreciate the ideas behind the patterns here.
@hrtmtbrng5968
@hrtmtbrng5968 5 месяцев назад
In my opinion this example is not so good. You blindly implement what you know from React without thinking if this is appropriate or not. This structure makes only sense when your event and your effect are far away from each others. You should choose this structure in order to reduce the sphaghetti-ness of the code, which pulls strings criss cross through your project. But in the example you don't have this. You create it. Your first solution even had the opposite of this. It is the principle of locality. You had the definition of the svg and right there you have defined the handler on it and right there you have defined the effect and right there you have the thing the effect is about. That is already perfect. And you also said, in this case it is not bad. But then the example is just bad for what you try to explain. I know, there are other good reasons why your solution is actually better, and I don't question this. But I don't think, persons who watch this video, actually understand them or that they learn the basic idea behind this. You just said at 5:13 "I would like to introduce a pattern here." For the audience it may look very uninspired. You just apply this pattern, because you learnt it from a text book or because this is how React does it. And now you pull it out of the hat and confront the audience with it. But anyway, the vidoe is very good! Thanks a lot!
@currankelleher
@currankelleher 5 месяцев назад
This is great feedback, thank you so much! You are probably right that I introduce the pattern too early, before the need for it becomes clear. I think I need to follow the teaching principle of "Just in Time not Just In Case", because you're correct that the pattern does not provide any clear benefit with such a small example. Perhaps it's best to wait until the examples get more complex, with more "moving parts" regarding tracking state (such as with multiple linked views), and only then introduce this pattern, so that its benefits are more clear. I really appreciate your feedback here, thank you so much!
@sajadahmadi595
@sajadahmadi595 5 месяцев назад
@sajadahmadi595
@sajadahmadi595 5 месяцев назад
❤❤❤
@sajadahmadi595
@sajadahmadi595 5 месяцев назад
❤❤❤
@sajadahmadi595
@sajadahmadi595 5 месяцев назад
❤❤❤
@sajadahmadi595
@sajadahmadi595 5 месяцев назад
❤❤❤
@kostraone
@kostraone 5 месяцев назад
Hi. Why would you do that over just using a regular select/options ?
@currankelleher
@currankelleher 5 месяцев назад
What do you mean by regular?
@kostraone
@kostraone 5 месяцев назад
@@currankelleher HTML/CSS and DOM manipulation if needed.
@kostraone
@kostraone 5 месяцев назад
Okay 👍
@currankelleher
@currankelleher 4 месяца назад
@@kostraone The main reason I'm doing it this way is because I want to provide a path forward for my students to easily add menus to their existing data visualizations that use D3. I figured it's easier to add it this way, rather than hardcoding it as HTML (since many of the menus are data-driven), and also preferable to introducing an entire new framework like React into the mix.
@sajadahmadi595
@sajadahmadi595 5 месяцев назад
@sajadahmadi595
@sajadahmadi595 5 месяцев назад
❤❤❤
@DeveloperZak
@DeveloperZak 5 месяцев назад
This is wonderful! Thank you for sharing this!
@xzssyy
@xzssyy 5 месяцев назад
Thanks!
@All-about-te
@All-about-te 5 месяцев назад
🤍yes i liked it 👍
@9oroborus450
@9oroborus450 5 месяцев назад
Useful and satisfying to watch in action! Thanks!
@9oroborus450
@9oroborus450 6 месяцев назад
I try to replicate this example (not on vizhub, but in vanilla js). It turned out that my circles do not following the cursor as expected. After some investigation I realized that this behavior is related to my browser's zoom level. Although, I'm using the browser at 100%, for some reason the circles only follow the mouse correctly at 125% zoom. :/
@9oroborus450
@9oroborus450 6 месяцев назад
It seems that the root of my problem comes from the fact that I use linear scales and margins. This works for me, but probably not the most ideal solution... x: d.x + xScale.invert(margin.left + event.dx), y: d.y - (yScale.invert(0) - yScale.invert(event.dy)),