{"id":18985,"date":"2025-03-05T10:08:30","date_gmt":"2025-03-05T10:08:30","guid":{"rendered":"https:\/\/www.anychart.com\/blog\/?p=18985"},"modified":"2025-03-05T10:08:30","modified_gmt":"2025-03-05T10:08:30","slug":"pinch-to-zoom","status":"publish","type":"post","link":"https:\/\/www.anychart.com\/blog\/2025\/03\/05\/pinch-to-zoom\/","title":{"rendered":"Pinch-to-Zoom in Stock Charts \u2014 JS Chart Tips"},"content":{"rendered":"<p><a href=\"https:\/\/www.anychart.com\/blog\/2025\/03\/05\/pinch-to-zoom\" target=\"_blank\"><img decoding=\"async\" src=\"https:\/\/www.anychart.com\/blog\/wp-content\/uploads\/2025\/03\/pinch-to-zoom-in-javascript-stock-chart.png\" alt=\"A stock chart with pinch-to-zoom functionality and JavaScript code\" width=\"100%\" class=\"alignnone size-full wp-image-19035\" srcset=\"https:\/\/www.anychart.com\/blog\/wp-content\/uploads\/2025\/03\/pinch-to-zoom-in-javascript-stock-chart.png 1336w, https:\/\/www.anychart.com\/blog\/wp-content\/uploads\/2025\/03\/pinch-to-zoom-in-javascript-stock-chart-300x159.png 300w, https:\/\/www.anychart.com\/blog\/wp-content\/uploads\/2025\/03\/pinch-to-zoom-in-javascript-stock-chart-768x408.png 768w, https:\/\/www.anychart.com\/blog\/wp-content\/uploads\/2025\/03\/pinch-to-zoom-in-javascript-stock-chart-1024x544.png 1024w\" sizes=\"(max-width: 1336px) 100vw, 1336px\" \/><\/a><a href=\"https:\/\/www.anychart.com\/chartopedia\/chart-type\/stock-chart\/\" target=\"_blank\">Stock charts<\/a> are designed to handle large volumes of time-based data, and smooth navigation is key to working with them effectively. One common need is zooming \u2014 whether to focus on a specific time range in greater detail or to get a broader view of the data.<\/p>\n<p>In our <a href=\"https:\/\/www.anychart.com\/products\/anystock\" target=\"_blank\">JavaScript stock charts<\/a>, zooming works out of the box through the <a href=\"https:\/\/docs.anychart.com\/Stock_Charts\/Scroller\" target=\"_blank\" rel=\"nofollow\">scroller<\/a> element, which appears by default as the main navigational UI control, making it easy to adjust the visible range on the go. For even greater flexibility, the <a href=\"https:\/\/docs.anychart.com\/Stock_Charts\/Range_Selection\" target=\"_blank\" rel=\"nofollow\">range selection UI<\/a> provides extra tools like preset time period buttons and date input fields. You can also activate zooming via mouse wheel scrolling with the <a href=\"https:\/\/api.anychart.com\/anychart.core.utils.StockInteractivity#unselectOnClickOutOfPoint\" target=\"_blank\" rel=\"nofollow\">zoomOnMouseWheel()<\/a> method, which corresponds to the two-finger swipe gesture on touchpads and trackpads.<\/p>\n<p>Pinch-to-zoom is another intuitive zooming option. It allows users to zoom in and out naturally on mobile and touch devices by moving two fingers farther apart or closer together. This is also easy to implement \u2014 and it is exactly what we cover in this edition of <a href=\"https:\/\/www.anychart.com\/blog\/category\/js-chart-tips\/\" target=\"_blank\">JS Chart Tips<\/a>. Learn how to add pinch-to-zoom to your JavaScript stock chart!<\/p>\n<p><!--more--><\/p>\n<h2>Question: How to Add Pinch-to-Zoom to JavaScript Stock Chart?<\/h2>\n<p>Recently, our <a href=\"https:\/\/www.anychart.com\/support\" target=\"_blank\">Support Team<\/a> received several questions about enabling pinch-to-zoom in our <a href=\"https:\/\/www.anychart.com\/products\/anystock\" target=\"_blank\">JavaScript stock charts<\/a>. Since this feature provides a smooth and intuitive way for users to zoom in and out of time-based data using familiar gestures \u2014 particularly on mobile \u2014 we figured it would be helpful to share the solution publicly, not just with those who reached out.<\/p>\n<p>Here is an animation showing the pinch zoom behavior we are talking about \u2014 zooming in or out of the timeline with a simple two-finger pinch gesture:<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/www.anychart.com\/blog\/wp-content\/uploads\/2025\/03\/pinch-zoom-stock-chart-demo.gif\" alt=\"Pinch zooming in stock charts\" width=\"70%\" class=\"alignnone size-full wp-image-19036\" \/><br \/>\nSo, how exactly can you add pinch zooming? Let us show you! Below, we will walk you through how to enable pinch-to-zoom functionality in a stock chart using JavaScript.<\/p>\n<h2>Solution: Implementing Pinch Zoom in JS Stock Charts<\/h2>\n<h3>Overview<\/h3>\n<p>Pinch-to-zoom essentially mirrors the behavior of holding Ctrl (or Cmd on Mac) while scrolling the mouse wheel. So, the solution involves capturing mouse wheel events triggered when the user scrolls while holding Ctrl\/Cmd, preventing the default browser behavior (which would otherwise zoom the page), and dynamically adjusting the chart\u2019s visible range by updating the X-axis scale.<\/p>\n<p>This approach provides smooth, intuitive zooming \u2014 whether users scroll while holding Ctrl\/Cmd or perform a pinch gesture.<\/p>\n<p>Now, let\u2019s see how this can be implemented with just a few lines of code.<\/p>\n<h3>In Detail<\/h3>\n<p>First, assuming you have already <a href=\"https:\/\/www.anychart.com\/blog\/2023\/09\/05\/stock-chart-javascript\/\" target=\"_blank\">created a stock chart<\/a>, access the container where the chart is rendered. You can do this by selecting the container element using <code class=\"javascript\">document.getElementById<\/code>:<\/p>\n<pre><code class=\"javascript\">var container = document.getElementById(\"container\");<\/code><\/pre>\n<p>Second, add an event listener to detect when the user scrolls while holding Ctrl (or Cmd on Mac). This is done using the <code>mousewheel<\/code> event:<\/p>\n<pre><code class=\"javascript\">container.addEventListener(\"mousewheel\", function(e) {\r\n  \/\/ ensure zooming only happens when Ctrl (or Cmd on Mac) is pressed\r\n  if (e.ctrlKey) {\r\n    \/\/ prevent the default browser zoom behavior\r\n    e.preventDefault();\r\n    \/\/ zoom logic will go here\r\n  }\r\n});<\/code><\/pre>\n<p>Third, once a zoom event is detected, dynamically update the X-axis scale to zoom in or out by adjusting the visible range:<\/p>\n<pre><code class=\"javascript\">\/\/ retrieve the x-axis scale\r\nvar xScale = chart.xScale();\r\n\r\n\/\/ get the current visible range\r\nvar max = xScale.getMaximum();\r\nvar min = xScale.getMinimum();\r\n\r\n\/\/ calculate the current range\r\nvar gap = max - min;\r\n\r\n\/\/ update the range dynamically\r\nchart.selectRange(min - gap * e.deltaY \/ 200, max + gap * e.deltaY \/ 200);<\/code><\/pre>\n<p>That is basically it \u2014 your stock chart now supports pinch-to-zoom behavior.<\/p>\n<p>For reference, here is the complete code, combining all the steps above:<\/p>\n<pre><code class=\"javascript\">var container = document.getElementById(\"container\");\r\ncontainer.addEventListener(\"mousewheel\", function(e) {\r\n  if (e.ctrlKey) {\r\n    e.preventDefault();\r\n    xScale = chart.xScale();\r\n    max = xScale.getMaximum();\r\n    min = xScale.getMinimum();\r\n    gap = max - min;\r\n    chart.selectRange(min - gap*e.deltaY\/200 , max + gap*e.deltaY\/200);\r\n  }\r\n});<\/code><\/pre>\n<h3>Example<\/h3>\n<p>Check out an example of a stock chart with pinch-to-zoom, and feel free to experiment further with its code and visualization:<\/p>\n<ul>\n<li><a href=\"https:\/\/playground.anychart.com\/10TwUZI5\" target=\"_blank\" rel=\"nofollow\">Stock Chart with Pinch-to-Zoom | AnyChart Playground<\/a><\/li>\n<\/ul>\n<p><a href=\"https:\/\/playground.anychart.com\/10TwUZI5\" target=\"_blank\" rel=\"nofollow\"><img decoding=\"async\" src=\"https:\/\/www.anychart.com\/blog\/wp-content\/uploads\/2025\/03\/stock-chart-with-pinch-zoom.png\" alt=\"A snapshot of this stock chart with pinch zoom on AnyChart Playground\" width=\"100%\" class=\"alignnone size-full wp-image-19037\" srcset=\"https:\/\/www.anychart.com\/blog\/wp-content\/uploads\/2025\/03\/stock-chart-with-pinch-zoom.png 1200w, https:\/\/www.anychart.com\/blog\/wp-content\/uploads\/2025\/03\/stock-chart-with-pinch-zoom-300x188.png 300w, https:\/\/www.anychart.com\/blog\/wp-content\/uploads\/2025\/03\/stock-chart-with-pinch-zoom-768x480.png 768w, https:\/\/www.anychart.com\/blog\/wp-content\/uploads\/2025\/03\/stock-chart-with-pinch-zoom-1024x640.png 1024w\" sizes=\"(max-width: 1200px) 100vw, 1200px\" \/><\/a><\/p>\n<h2>Further Learning<\/h2>\n<p>Learn more in our JavaScript charting documentation:<\/p>\n<ul>\n<li><a href=\"https:\/\/docs.anychart.com\/Stock_Charts\/Overview\" target=\"_blank\" rel=\"nofollow\">Stock Charts | AnyChart JS Documentation<\/a><\/li>\n<li><a href=\"https:\/\/docs.anychart.com\/Common_Settings\/Event_Listeners\" target=\"_blank\" rel=\"nofollow\">Event Listeners | AnyChart JS Documentation<\/a><\/li>\n<\/ul>\n<h2>Wrapping Up<\/h2>\n<p>Now you know how to add pinch-to-zoom support to your JavaScript stock chart, making navigation even more intuitive with familiar touch gestures and scroll actions.<\/p>\n<p>Keep following the <a href=\"https:\/\/www.anychart.com\/blog\/category\/js-chart-tips\/\" target=\"_blank\">JS Chart Tips<\/a> series for more practical solutions inspired by real-world cases and feature requests from our <a href=\"https:\/\/www.anychart.com\/company\/customers\/\" target=\"_blank\">customers<\/a>. If you have any questions or need assistance, our <a href=\"https:\/\/www.anychart.com\/support\" target=\"_blank\">Support Team<\/a> is always ready to help.<\/p>\n<p><strong>Enjoy smooth zooming into your data with our <a href=\"https:\/\/www.anychart.com\" target=\"_blank\">JavaScript charts<\/a>!<\/strong><\/p>\n<p><!-- SyntaxHighlighter --><link rel=\"stylesheet\" href=\"\/\/cdnjs.cloudflare.com\/ajax\/libs\/highlight.js\/9.12.0\/styles\/default.min.css\"><link rel=\"stylesheet\" href=\"\/\/cdnjs.cloudflare.com\/ajax\/libs\/highlight.js\/9.12.0\/styles\/atom-one-light.min.css\"><script src=\"\/\/cdnjs.cloudflare.com\/ajax\/libs\/highlight.js\/9.12.0\/highlight.min.js\"><\/script><script>hljs.initHighlightingOnLoad();<\/script><\/p>\n<!-- AddThis Advanced Settings generic via filter on the_content --><!-- AddThis Share Buttons generic via filter on the_content -->","protected":false},"excerpt":{"rendered":"<p>Stock charts are designed to handle large volumes of time-based data, and smooth navigation is key to working with them effectively. One common need is zooming \u2014 whether to focus on a specific time range in greater detail or to get a broader view of the data. In our JavaScript stock charts, zooming works out [&hellip;]<!-- AddThis Advanced Settings generic via filter on get_the_excerpt --><!-- AddThis Share Buttons generic via filter on get_the_excerpt --><\/p>\n","protected":false},"author":9,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[5,18,263,19,23,13,3780,20,4],"tags":[4044,3928,4043,53,3840,4053,4102,3935,93,289,4122,254,3819,3149,284,4209,3967,4314,127,4311,166,4104,3942,3971,258,4109,4110,4111,4112,4113,4259,3833,4277,3850,4114,1924,156,3818,4042,471,266,620,1292,880,806,3352,509,4224,3845,2220,2838,4223,54,1760,2757,256,4121,1111,350,4120,3032,3978,844,165,313,1370,743,133,774,3369,4115,4116,3620,4106,47,912,4219,4063,3922,4012,4011,4071,4070,805,914,4306,4307,913,2013,4041,2014,4040,32,55,3927,4261,144,167,4085,4084,146,3926,433,36,3925,907,141,249,3111,81,3931,57,4107,3838,3939,1238,142,99,4225,4108,3947,3586,4054,58,3832,65,56,3929,101,3526,911,1937,2335,1938,4124,4118,4304,4305,3965,4226,4312,4300,4310,4302,4303,4301,304,4123,3630,459,3941,3601,200,4227,37,910,915,920,1958,1959,1960,4228,3606,4119,4230,4229,3966,30,4308,4309,4231,172,807,808,954,293,745,4132,3494,2015,2816,1763,804,3599,3600,4131,3406,3407,3964,3968,4313],"class_list":["post-18985","post","type-post","status-publish","format-standard","hentry","category-anychart-charting-component","category-anystock","category-big-data","category-financial-charts","category-html5","category-javascript","category-js-chart-tips","category-stock-charts","category-tips-and-tricks","tag-advanced-chart-navigation","tag-advanced-charting-with-javascript","tag-advanced-navigation-charts","tag-anychart","tag-anychart-api","tag-anychart-js-api-reference","tag-anychart-playground","tag-anychart-tutorial","tag-anystock","tag-api","tag-appearance","tag-chart","tag-chart-customization","tag-chart-development","tag-chart-examples","tag-chart-legend","tag-chart-navigation","tag-chart-panning","tag-chart-types","tag-chart-zooming","tag-charting","tag-charting-features","tag-charting-library","tag-charting-software","tag-charts","tag-code","tag-code-examples","tag-code-samples","tag-code-snippets","tag-configure","tag-custom-charts","tag-custom-data-visualization","tag-custom-images","tag-custom-js-visualizations","tag-customer-support","tag-customers","tag-customizability","tag-customization","tag-customizing-charts","tag-data-analysis","tag-data-analytics","tag-data-analytics-examples","tag-data-chart","tag-data-charting","tag-data-charts","tag-data-graphic","tag-data-graphics","tag-data-grouping","tag-data-presentation-tips","tag-data-visual","tag-data-visualisation","tag-data-visualisations","tag-data-visualization","tag-data-visualization-design","tag-data-visualization-development","tag-data-visualization-examples","tag-data-visualization-library","tag-data-visualization-practice","tag-data-visualization-projects","tag-data-visualization-software","tag-data-visualization-technologies","tag-data-visualization-tools","tag-data-visualization-tutorial","tag-data-visualizations","tag-data-visuals","tag-data-viz-examples","tag-data-viz","tag-dataviz","tag-dataviz-examples","tag-developers","tag-development","tag-documentation","tag-event-listeners","tag-examples","tag-financial-charts","tag-financial-data","tag-financial-data-api","tag-financial-data-charts","tag-financial-markets","tag-financial-report","tag-financial-report-chart","tag-financial-reporting","tag-financial-reporting-charts","tag-front-end-development","tag-fundamental-financial-data","tag-gesture","tag-gestures","tag-historical-stock-prices","tag-html","tag-html-chart-setup","tag-html-charts","tag-html-page-setup","tag-html5","tag-html5-charts","tag-html5-charts-tutorial","tag-html5-data-visualization","tag-infographics","tag-interactive-charts","tag-interactive-data","tag-interactive-data-chart","tag-interactive-data-visualization","tag-interactive-data-visualization-tutorial","tag-interactive-graphics","tag-javascript","tag-javascript-chart-customization","tag-javascript-chart-tutorial","tag-javascript-charting","tag-javascript-charting-api","tag-javascript-charting-features","tag-javascript-charting-library","tag-javascript-charting-tutorial","tag-javascript-charts","tag-javascript-code","tag-javascript-data-display","tag-javascript-data-visualization","tag-javascript-graph","tag-javascript-graphics","tag-javascript-library","tag-javascript-stock-charts","tag-javascript-tutorial","tag-javascript-visualization-tutorial","tag-js","tag-js-api-reference","tag-js-chart","tag-js-chart-tips","tag-js-charting","tag-js-charts","tag-js-data-visualizations","tag-js-graphics","tag-js-library","tag-js-stock-chart","tag-json","tag-json-charts","tag-json-data-visualization","tag-learning","tag-methods","tag-mouse-wheel","tag-mouse-wheel-scroll","tag-navigation","tag-ohlc-charts","tag-panning","tag-pinch","tag-pinch-gesture","tag-pinch-zoom","tag-pinch-zooming","tag-pinch-to-zoom","tag-programming","tag-sample-code","tag-software-development","tag-statistics","tag-step-by-step-tutorial","tag-stock","tag-stock-chart","tag-stock-chart-data-grouping","tag-stock-charts","tag-stock-data","tag-stock-data-feed","tag-stock-exchange-data","tag-stock-market","tag-stock-market-data","tag-stock-market-data-visualization","tag-stock-market-visualization","tag-stock-plot","tag-support-team","tag-time-intervals","tag-time-based-data-visualization","tag-timeline-navigation","tag-tips-and-tricks","tag-touch-gesture","tag-touch-gestures","tag-trading-charts","tag-tutorial","tag-visual-analysis","tag-visual-analytics","tag-visual-data-analytics","tag-visualization","tag-visualization-techniques","tag-web-app","tag-web-chart","tag-web-charts","tag-web-design","tag-web-developers","tag-web-development","tag-web-page","tag-web-project","tag-webpage","tag-website","tag-website-development","tag-zoom-controls","tag-zoom-levels","tag-zooming","wpautop"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.1.1 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Pinch-to-Zoom in Stock Charts \u2014 JavaScript Chart Tips<\/title>\n<meta name=\"description\" content=\"Learn how to add pinch zoom functionality to a JavaScript stock chart for smooth gesture-based navigation on touch and mobile devices.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.anychart.com\/blog\/2025\/03\/05\/pinch-to-zoom\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Pinch-to-Zoom in Stock Charts \u2014 JS Chart Tips\" \/>\n<meta property=\"og:description\" content=\"Learn how to add pinch zoom to a JavaScript stock chart for gesture navigation on touch &amp; mobile devices.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.anychart.com\/blog\/2025\/03\/05\/pinch-to-zoom\/\" \/>\n<meta property=\"og:site_name\" content=\"AnyChart News\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/AnyCharts\" \/>\n<meta property=\"article:published_time\" content=\"2025-03-05T10:08:30+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.anychart.com\/blog\/wp-content\/uploads\/2025\/03\/pinch-to-zoom-in-javascript-stock-chart-og.png\" \/>\n<meta name=\"author\" content=\"AnyChart Team\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:title\" content=\"Pinch-to-Zoom in Stock Charts \u2014 JS Chart Tips\" \/>\n<meta name=\"twitter:description\" content=\"Learn how to add pinch zoom to a JavaScript stock chart for gesture navigation on touch &amp; mobile devices.\" \/>\n<meta name=\"twitter:image\" content=\"https:\/\/www.anychart.com\/blog\/wp-content\/uploads\/2025\/03\/pinch-to-zoom-in-javascript-stock-chart-x.png\" \/>\n<meta name=\"twitter:creator\" content=\"@AnyChart\" \/>\n<meta name=\"twitter:site\" content=\"@AnyChart\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"AnyChart Team\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"4 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/www.anychart.com\/blog\/2025\/03\/05\/pinch-to-zoom\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.anychart.com\/blog\/2025\/03\/05\/pinch-to-zoom\/\"},\"author\":{\"name\":\"AnyChart Team\",\"@id\":\"https:\/\/www.anychart.com\/blog\/#\/schema\/person\/2470e26e58231357db6d9993ecd6461b\"},\"headline\":\"Pinch-to-Zoom in Stock Charts \u2014 JS Chart Tips\",\"datePublished\":\"2025-03-05T10:08:30+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.anychart.com\/blog\/2025\/03\/05\/pinch-to-zoom\/\"},\"wordCount\":634,\"commentCount\":0,\"image\":{\"@id\":\"https:\/\/www.anychart.com\/blog\/2025\/03\/05\/pinch-to-zoom\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.anychart.com\/blog\/wp-content\/uploads\/2025\/03\/pinch-to-zoom-in-javascript-stock-chart.png\",\"keywords\":[\"advanced chart navigation\",\"advanced charting with JavaScript\",\"advanced navigation charts\",\"AnyChart\",\"AnyChart API\",\"AnyChart JS API Reference\",\"AnyChart Playground\",\"AnyChart tutorial\",\"AnyStock\",\"api\",\"appearance\",\"chart\",\"chart customization\",\"chart development\",\"chart examples\",\"chart legend\",\"chart navigation\",\"chart panning\",\"chart types\",\"chart zooming\",\"charting\",\"charting features\",\"charting library\",\"charting software\",\"charts\",\"code\",\"code examples\",\"code samples\",\"code snippets\",\"configure\",\"Custom Charts\",\"custom data visualization\",\"custom images\",\"custom JS visualizations\",\"customer support\",\"customers\",\"Customizability\",\"customization\",\"customizing charts\",\"data analysis\",\"data analytics\",\"data analytics examples\",\"data chart\",\"data charting\",\"data charts\",\"data graphic\",\"data graphics\",\"Data grouping\",\"data presentation tips\",\"data visual\",\"data visualisation\",\"data visualisations\",\"Data Visualization\",\"data visualization design\",\"data visualization development\",\"data visualization examples\",\"data visualization library\",\"data visualization practice\",\"data visualization projects\",\"data visualization software\",\"data visualization technologies\",\"data visualization tools\",\"data visualization tutorial\",\"data visualizations\",\"data visuals\",\"data viz examples\",\"data-viz\",\"dataviz\",\"dataviz examples\",\"developers\",\"development\",\"documentation\",\"event listeners\",\"examples\",\"Financial charts\",\"financial data\",\"financial data API\",\"financial data charts\",\"financial markets\",\"financial report\",\"financial report chart\",\"financial reporting\",\"financial reporting charts\",\"front-end development\",\"fundamental financial data\",\"gesture\",\"gestures\",\"historical stock prices\",\"HTML\",\"HTML chart setup\",\"HTML charts\",\"HTML page setup\",\"HTML5\",\"html5 charts\",\"HTML5 charts tutorial\",\"HTML5 Data Visualization\",\"infographics\",\"interactive charts\",\"interactive data\",\"interactive data chart\",\"interactive data visualization\",\"interactive data visualization tutorial\",\"interactive graphics\",\"JavaScript\",\"JavaScript chart customization\",\"javascript chart tutorial\",\"javascript charting\",\"javascript charting api\",\"JavaScript charting features\",\"JavaScript charting library\",\"JavaScript charting tutorial\",\"javascript charts\",\"JavaScript code\",\"JavaScript data display\",\"JavaScript data visualization\",\"javascript graph\",\"javascript graphics\",\"JavaScript library\",\"JavaScript stock charts\",\"JavaScript tutorial\",\"JavaScript visualization tutorial\",\"js\",\"JS API Reference\",\"js chart\",\"JS chart tips\",\"js charting\",\"js charts\",\"js data visualizations\",\"JS graphics\",\"js library\",\"JS stock chart\",\"JSON\",\"JSON charts\",\"JSON data visualization\",\"learning\",\"methods\",\"mouse wheel\",\"mouse wheel scroll\",\"navigation\",\"OHLC charts\",\"panning\",\"pinch\",\"pinch gesture\",\"pinch zoom\",\"pinch zooming\",\"pinch-to-zoom\",\"programming\",\"sample code\",\"software development\",\"statistics\",\"step-by-step tutorial\",\"stock\",\"stock chart\",\"Stock chart data grouping\",\"Stock charts\",\"stock data\",\"stock data feed\",\"stock exchange data\",\"stock market\",\"stock market data\",\"stock market data visualization\",\"Stock market visualization\",\"stock plot\",\"support team\",\"Time intervals\",\"Time-based data visualization\",\"timeline navigation\",\"Tips and tricks\",\"touch gesture\",\"touch gestures\",\"Trading charts\",\"tutorial\",\"visual analysis\",\"visual analytics\",\"visual data analytics\",\"visualization\",\"visualization techniques\",\"web app\",\"web chart\",\"web charts\",\"web design\",\"web developers\",\"web development\",\"web page\",\"web project\",\"webpage\",\"website\",\"website development\",\"zoom controls\",\"zoom levels\",\"zooming\"],\"articleSection\":[\"AnyChart Charting Component\",\"AnyStock\",\"Big Data\",\"Financial Charts\",\"HTML5\",\"JavaScript\",\"JS Chart Tips\",\"Stock Charts\",\"Tips and Tricks\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/www.anychart.com\/blog\/2025\/03\/05\/pinch-to-zoom\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.anychart.com\/blog\/2025\/03\/05\/pinch-to-zoom\/\",\"url\":\"https:\/\/www.anychart.com\/blog\/2025\/03\/05\/pinch-to-zoom\/\",\"name\":\"Pinch-to-Zoom in Stock Charts \u2014 JavaScript Chart Tips\",\"isPartOf\":{\"@id\":\"https:\/\/www.anychart.com\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.anychart.com\/blog\/2025\/03\/05\/pinch-to-zoom\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.anychart.com\/blog\/2025\/03\/05\/pinch-to-zoom\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.anychart.com\/blog\/wp-content\/uploads\/2025\/03\/pinch-to-zoom-in-javascript-stock-chart.png\",\"datePublished\":\"2025-03-05T10:08:30+00:00\",\"author\":{\"@id\":\"https:\/\/www.anychart.com\/blog\/#\/schema\/person\/2470e26e58231357db6d9993ecd6461b\"},\"description\":\"Learn how to add pinch zoom functionality to a JavaScript stock chart for smooth gesture-based navigation on touch and mobile devices.\",\"breadcrumb\":{\"@id\":\"https:\/\/www.anychart.com\/blog\/2025\/03\/05\/pinch-to-zoom\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.anychart.com\/blog\/2025\/03\/05\/pinch-to-zoom\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.anychart.com\/blog\/2025\/03\/05\/pinch-to-zoom\/#primaryimage\",\"url\":\"https:\/\/www.anychart.com\/blog\/wp-content\/uploads\/2025\/03\/pinch-to-zoom-in-javascript-stock-chart.png\",\"contentUrl\":\"https:\/\/www.anychart.com\/blog\/wp-content\/uploads\/2025\/03\/pinch-to-zoom-in-javascript-stock-chart.png\",\"width\":1336,\"height\":710},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.anychart.com\/blog\/2025\/03\/05\/pinch-to-zoom\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.anychart.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Pinch-to-Zoom in Stock Charts \u2014 JS Chart Tips\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.anychart.com\/blog\/#website\",\"url\":\"https:\/\/www.anychart.com\/blog\/\",\"name\":\"AnyChart News\",\"description\":\"AnyChart JS Charts\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.anychart.com\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.anychart.com\/blog\/#\/schema\/person\/2470e26e58231357db6d9993ecd6461b\",\"name\":\"AnyChart Team\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.anychart.com\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/4faeb24a1b553a1b071b765bfad138c00441a955b3a631c7564624ceeafdf884?s=96&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/4faeb24a1b553a1b071b765bfad138c00441a955b3a631c7564624ceeafdf884?s=96&r=g\",\"caption\":\"AnyChart Team\"},\"sameAs\":[\"https:\/\/www.anychart.com\"],\"url\":\"https:\/\/www.anychart.com\/blog\/author\/andrey-khachaturov\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Pinch-to-Zoom in Stock Charts \u2014 JavaScript Chart Tips","description":"Learn how to add pinch zoom functionality to a JavaScript stock chart for smooth gesture-based navigation on touch and mobile devices.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.anychart.com\/blog\/2025\/03\/05\/pinch-to-zoom\/","og_locale":"en_US","og_type":"article","og_title":"Pinch-to-Zoom in Stock Charts \u2014 JS Chart Tips","og_description":"Learn how to add pinch zoom to a JavaScript stock chart for gesture navigation on touch & mobile devices.","og_url":"https:\/\/www.anychart.com\/blog\/2025\/03\/05\/pinch-to-zoom\/","og_site_name":"AnyChart News","article_publisher":"https:\/\/www.facebook.com\/AnyCharts","article_published_time":"2025-03-05T10:08:30+00:00","og_image":[{"url":"https:\/\/www.anychart.com\/blog\/wp-content\/uploads\/2025\/03\/pinch-to-zoom-in-javascript-stock-chart-og.png","type":"","width":"","height":""}],"author":"AnyChart Team","twitter_card":"summary_large_image","twitter_title":"Pinch-to-Zoom in Stock Charts \u2014 JS Chart Tips","twitter_description":"Learn how to add pinch zoom to a JavaScript stock chart for gesture navigation on touch & mobile devices.","twitter_image":"https:\/\/www.anychart.com\/blog\/wp-content\/uploads\/2025\/03\/pinch-to-zoom-in-javascript-stock-chart-x.png","twitter_creator":"@AnyChart","twitter_site":"@AnyChart","twitter_misc":{"Written by":"AnyChart Team","Est. reading time":"4 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.anychart.com\/blog\/2025\/03\/05\/pinch-to-zoom\/#article","isPartOf":{"@id":"https:\/\/www.anychart.com\/blog\/2025\/03\/05\/pinch-to-zoom\/"},"author":{"name":"AnyChart Team","@id":"https:\/\/www.anychart.com\/blog\/#\/schema\/person\/2470e26e58231357db6d9993ecd6461b"},"headline":"Pinch-to-Zoom in Stock Charts \u2014 JS Chart Tips","datePublished":"2025-03-05T10:08:30+00:00","mainEntityOfPage":{"@id":"https:\/\/www.anychart.com\/blog\/2025\/03\/05\/pinch-to-zoom\/"},"wordCount":634,"commentCount":0,"image":{"@id":"https:\/\/www.anychart.com\/blog\/2025\/03\/05\/pinch-to-zoom\/#primaryimage"},"thumbnailUrl":"https:\/\/www.anychart.com\/blog\/wp-content\/uploads\/2025\/03\/pinch-to-zoom-in-javascript-stock-chart.png","keywords":["advanced chart navigation","advanced charting with JavaScript","advanced navigation charts","AnyChart","AnyChart API","AnyChart JS API Reference","AnyChart Playground","AnyChart tutorial","AnyStock","api","appearance","chart","chart customization","chart development","chart examples","chart legend","chart navigation","chart panning","chart types","chart zooming","charting","charting features","charting library","charting software","charts","code","code examples","code samples","code snippets","configure","Custom Charts","custom data visualization","custom images","custom JS visualizations","customer support","customers","Customizability","customization","customizing charts","data analysis","data analytics","data analytics examples","data chart","data charting","data charts","data graphic","data graphics","Data grouping","data presentation tips","data visual","data visualisation","data visualisations","Data Visualization","data visualization design","data visualization development","data visualization examples","data visualization library","data visualization practice","data visualization projects","data visualization software","data visualization technologies","data visualization tools","data visualization tutorial","data visualizations","data visuals","data viz examples","data-viz","dataviz","dataviz examples","developers","development","documentation","event listeners","examples","Financial charts","financial data","financial data API","financial data charts","financial markets","financial report","financial report chart","financial reporting","financial reporting charts","front-end development","fundamental financial data","gesture","gestures","historical stock prices","HTML","HTML chart setup","HTML charts","HTML page setup","HTML5","html5 charts","HTML5 charts tutorial","HTML5 Data Visualization","infographics","interactive charts","interactive data","interactive data chart","interactive data visualization","interactive data visualization tutorial","interactive graphics","JavaScript","JavaScript chart customization","javascript chart tutorial","javascript charting","javascript charting api","JavaScript charting features","JavaScript charting library","JavaScript charting tutorial","javascript charts","JavaScript code","JavaScript data display","JavaScript data visualization","javascript graph","javascript graphics","JavaScript library","JavaScript stock charts","JavaScript tutorial","JavaScript visualization tutorial","js","JS API Reference","js chart","JS chart tips","js charting","js charts","js data visualizations","JS graphics","js library","JS stock chart","JSON","JSON charts","JSON data visualization","learning","methods","mouse wheel","mouse wheel scroll","navigation","OHLC charts","panning","pinch","pinch gesture","pinch zoom","pinch zooming","pinch-to-zoom","programming","sample code","software development","statistics","step-by-step tutorial","stock","stock chart","Stock chart data grouping","Stock charts","stock data","stock data feed","stock exchange data","stock market","stock market data","stock market data visualization","Stock market visualization","stock plot","support team","Time intervals","Time-based data visualization","timeline navigation","Tips and tricks","touch gesture","touch gestures","Trading charts","tutorial","visual analysis","visual analytics","visual data analytics","visualization","visualization techniques","web app","web chart","web charts","web design","web developers","web development","web page","web project","webpage","website","website development","zoom controls","zoom levels","zooming"],"articleSection":["AnyChart Charting Component","AnyStock","Big Data","Financial Charts","HTML5","JavaScript","JS Chart Tips","Stock Charts","Tips and Tricks"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.anychart.com\/blog\/2025\/03\/05\/pinch-to-zoom\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.anychart.com\/blog\/2025\/03\/05\/pinch-to-zoom\/","url":"https:\/\/www.anychart.com\/blog\/2025\/03\/05\/pinch-to-zoom\/","name":"Pinch-to-Zoom in Stock Charts \u2014 JavaScript Chart Tips","isPartOf":{"@id":"https:\/\/www.anychart.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.anychart.com\/blog\/2025\/03\/05\/pinch-to-zoom\/#primaryimage"},"image":{"@id":"https:\/\/www.anychart.com\/blog\/2025\/03\/05\/pinch-to-zoom\/#primaryimage"},"thumbnailUrl":"https:\/\/www.anychart.com\/blog\/wp-content\/uploads\/2025\/03\/pinch-to-zoom-in-javascript-stock-chart.png","datePublished":"2025-03-05T10:08:30+00:00","author":{"@id":"https:\/\/www.anychart.com\/blog\/#\/schema\/person\/2470e26e58231357db6d9993ecd6461b"},"description":"Learn how to add pinch zoom functionality to a JavaScript stock chart for smooth gesture-based navigation on touch and mobile devices.","breadcrumb":{"@id":"https:\/\/www.anychart.com\/blog\/2025\/03\/05\/pinch-to-zoom\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.anychart.com\/blog\/2025\/03\/05\/pinch-to-zoom\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.anychart.com\/blog\/2025\/03\/05\/pinch-to-zoom\/#primaryimage","url":"https:\/\/www.anychart.com\/blog\/wp-content\/uploads\/2025\/03\/pinch-to-zoom-in-javascript-stock-chart.png","contentUrl":"https:\/\/www.anychart.com\/blog\/wp-content\/uploads\/2025\/03\/pinch-to-zoom-in-javascript-stock-chart.png","width":1336,"height":710},{"@type":"BreadcrumbList","@id":"https:\/\/www.anychart.com\/blog\/2025\/03\/05\/pinch-to-zoom\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.anychart.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Pinch-to-Zoom in Stock Charts \u2014 JS Chart Tips"}]},{"@type":"WebSite","@id":"https:\/\/www.anychart.com\/blog\/#website","url":"https:\/\/www.anychart.com\/blog\/","name":"AnyChart News","description":"AnyChart JS Charts","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.anychart.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Person","@id":"https:\/\/www.anychart.com\/blog\/#\/schema\/person\/2470e26e58231357db6d9993ecd6461b","name":"AnyChart Team","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.anychart.com\/blog\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/4faeb24a1b553a1b071b765bfad138c00441a955b3a631c7564624ceeafdf884?s=96&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/4faeb24a1b553a1b071b765bfad138c00441a955b3a631c7564624ceeafdf884?s=96&r=g","caption":"AnyChart Team"},"sameAs":["https:\/\/www.anychart.com"],"url":"https:\/\/www.anychart.com\/blog\/author\/andrey-khachaturov\/"}]}},"_links":{"self":[{"href":"https:\/\/www.anychart.com\/blog\/wp-json\/wp\/v2\/posts\/18985","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.anychart.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.anychart.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.anychart.com\/blog\/wp-json\/wp\/v2\/users\/9"}],"replies":[{"embeddable":true,"href":"https:\/\/www.anychart.com\/blog\/wp-json\/wp\/v2\/comments?post=18985"}],"version-history":[{"count":37,"href":"https:\/\/www.anychart.com\/blog\/wp-json\/wp\/v2\/posts\/18985\/revisions"}],"predecessor-version":[{"id":19040,"href":"https:\/\/www.anychart.com\/blog\/wp-json\/wp\/v2\/posts\/18985\/revisions\/19040"}],"wp:attachment":[{"href":"https:\/\/www.anychart.com\/blog\/wp-json\/wp\/v2\/media?parent=18985"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.anychart.com\/blog\/wp-json\/wp\/v2\/categories?post=18985"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.anychart.com\/blog\/wp-json\/wp\/v2\/tags?post=18985"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}