Manipulating Chart.js Bar Charts: An Experience Featuring Currency Values, Zeros, and Totals

プログラミング・Web開発カテゴリを表すパンダのイラスト Programming / Web Development

About this article
This article is generated through an automated workflow utilizing generative AI. By using dummy data and browser interactions, you will learn the use cases, mechanisms, and observation points for troubleshooting in Chart.js. No access to real services or personal information is performed.

Verification Status: In reviews conducted up to October 30, 2026, official documentation was cross-referenced with the fixed source code of saved Daily Code, and Node.js syntax check results were recorded. Actual browser operations, rendering, and CDN responses are unverified. Screen descriptions represent expected values derived from the code and are distinguished from actual measurements.

ItemContent
TargetModern browsers such as Chrome, Edge, and Firefox (actual device compatibility unconfirmed)
Library UsedChart.js (Version in tutorial: 4.5.1)
CostThe demo source itself does not require a paid API. Data transmission fees and usage conditions depend on the environment.
DataDummy data within the page. No credentials, location data, or corporate data required.
Learning OperationUpdate charts and totals by adjusting simulated travel expenses

Why try this technology?

Even when numbers are arranged in a table, it can sometimes be difficult to intuitively grasp the magnitude of changes. Chart.js is a library that allows you to render line and bar charts with relatively little code. Our theme this time involves dummy allowance expenses, creating a bar chart for three categories: food expenses, travel expenses, and educational materials. Rather than simply creating an attractive chart, we will verify the meaning of setting inputs to zero and how to keep total values consistent with the chart values without contradiction.

When creating a functional sample, you should not stop at the mere fact that the visual element moved; you must distinguish "which input changed which variable, and which process updated the rendering." In this learning material, those changes are explicitly displayed on the screen. When integrating into an actual service, please design the authentication and saving processes separately.

First Try: Live Demo and Expected Results

When you open the page, a bar with a fictitious value of 3,000 yen for transportation expenses is displayed. Setting the slider to 0 changes the bar height to 0 and decreases the total. Since food expenses (5,000 yen) and learning materials (1,800 yen) remain unchanged, the total is calculated to be 6,800 yen. Next, increase the transportation expenses to 9,000 yen and check whether the total becomes 15,800 yen. The currency unit is indicated as yen in the dataset name and status display. Since the vertical axis ticks themselves do not have yen symbols, be careful not to misread the units. The expected output is an editorial calculation result and not an observed result from an actual browser.

Things to Check Before Operation

  1. Confirm that your PC can execute JavaScript. Administrator privileges are not required.

  2. Open the browser's developer tools and prepare to check the Console for errors and the Network tab for CDN fetch failures.

  3. If the demo is not published, save the Daily Code docs/demos/chartjs-pocket-money/index.html and app.js to the same folder. The learning material's web/chartjs-pocket-money/ contains a README, and the HTML/JS to be executed is on the docs/demos/ side.

  4. Open a terminal in the folder where the two files are saved, and run py -3 -m http.server 8000 --bind 127.0.0.1 on Windows or python3 -m http.server 8000 --bind 127.0.0.1 on Linux/macOS. If Python is not available, serve the same folder using another development environment capable of running a local HTTP server. Open http://127.0.0.1:8000/ in your browser, and press Ctrl+C in the terminal to exit. An environment capable of connecting to an external CDN is required.

  5. Check whether three bars and a slider appear on the screen and the status display at the bottom becomes the initial value SUCCESS: 合計 9800円(架空). The expected value is SUCCESS: 合計 6800円(架空) when travel expenses are set to 0, and SUCCESS: 合計 15800円(架空) when set to 9000. These are values calculated from the code, not actual measurement successes in a real browser.

  6. READY: JavaScriptを読み込み中 If it remains SUCCESS, script acquisition or execution may have stopped. Even if Chart is not defined is displayed, verify three separate aspects: bar rendering, slider operation, and the absence of console errors. In particular,

  7. is a candidate for a CDN retrieval failure. Compare the results before and after the operation. If they differ from the expected values, first record "what failed to display."

Overview of the mechanism

flowchart LR
    A["入力やクリック"] --> B["イベントを受ける"]
    B --> C["Chart.js のAPI"]
    C --> D["状態と描画を更新"]
    D --> E["見た目と文字で確認"]

This diagram is a conceptual illustration for learning purposes and does not represent the internal implementation of the browser or details of network communication. Regardless of the library, tracing "which variable the operation reaches" remains common.

How it works: Decoding the API

Bind a Chart instance to the HTML canvas. labels are the item names aligned on the horizontal axis, and datasets are sets of actual numerical values and colors. When an event occurs, changing just a single element of a dataset and calling chart.update reflects the new data in the rendering. Chart.js update is simpler than completely recreating the instance from scratch. Creating instances multiple times while continuing to use an existing canvas can cause unintended duplication or missed disposals.

How to read minimal code

const chart = new Chart(canvas, {
  type: "bar", data: { labels: ["食費", "交通費"], datasets: [{ data: [5000, 3000] }] }
});
chart.data.datasets[0].data[1] = 0;
chart.update();

The above is an excerpt extracting the key points of the API. It is not a complete, standalone executable file.Check the README and demo files on the Daily Code sidefor the complete set of HTML and implementation required to run it. Trace which function selects the HTML elements and which line updates the values, and test with known fictitious values.

Changing and comparing only one condition

When adding a single item to the horizontal axis, increasing only the label while forgetting to increase the value array breaks the correspondence. You must test that the sequences of item names, values, and colors always correspond. In the current demo, values are generated directly from input, so inputs such as negative numbers, decimals, and strings are restricted using a range slider. When expanding to CSV import or similar, perform input type and count validation first.

The comparison procedure is to record the initial value, change only one place, and check whether the result appears in the intended location. Changing multiple inputs at once makes it impossible to tell what had an effect. Verify up to the operation of reverting to the pre-change state.

Where to look when a failure occurs

Zero and missing values are distinct concepts. While zero represents a measured value of no cost, null or empty fields indicate that measurement may not have been possible. Arbitrarily converting missing values to zero can distort differences in totals and averages. Additionally, changing the starting position of the vertical axis to an intermediate value exaggerates small differences, making the purpose of the comparison and proper annotations necessary. Since some users cannot read data from chart images alone, raw numbers and totals should also be provided in the HTML body.

Observed stateDistinguishing pointsExample action
The screen remains unchanged from its initial stateScript acquisition, initialization, and event registrationCheck Console, Network, and script tags
The display changes, but the meaning is incorrectInput values, arrays, units, and update targetsFix values and check one condition at a time
Buttons cannot be clickedSelectors and DOM generation orderCheck the HTML to ensure IDs match
Fails on specific devices onlyBrowser features, permissions, CDN, and performanceRecord the device type, version, and reproduction steps

In-browser errors and public web server failures are different issues. The former are investigated via developer tool error logs, while the latter are analyzed through HTTP responses and asset delivery conditions. Refraining from labeling unknown failures as successes enhances the reliability of technical notes.

Application to business and learning

This is suitable for scenarios where numerous items need to be visualized quickly, such as equipment counts, server monitoring metrics, and training surveys. For monitoring purposes, the meanings of update times, missing data, aggregation units, and thresholds must be designed separately. Chart.js is a rendering assistance library and does not guarantee the correctness of aggregated values.

Decisions to make prior to implementation

When publishing to readers, determine the data source, who can modify it, the types of information retained on the screen, and the verification items for library updates. This demo includes neither login nor server persistence. Therefore, before adding operational features, we recommend first distinguishing between the minimum functional part that displays as expected and the part requiring operational reliability, permissions, and backups. Because third-party CDNs involve external communication, advance verification is required to ensure they are permitted by the corporate network.

Compare with other approaches

ApproachSuitable scenariosPoints to note
Chart.jsScenarios matching goals such as manipulating dummy transportation expenses to update graphs and totalsRequires managing dependency library updates and terms of use
Standard browser APIsBuilding small features in-houseSpecifications and compatibility must be checked independently
Static images and tablesExplanations that do not require user interactionState changes cannot be experienced interactively in real time

Libraries are tools to be chosen when needed. Compare them by weighing what you want to achieve against the learning curve. Avoiding the mindset of adding libraries just for the sake of it makes smaller pages easier to maintain.

GitHub Sample

The roles are separated such that the blog body provides the background and rationale, while Daily Code provides code for execution and modification. APIs for posting or saving to external services are not included.

Official Information and Primary Sources

Reviewed Reference Scope: Reverified the official Chart.js introduction, bar charts, and update API on 2026-10-30. This does not guarantee future changes to linked pages or the responses of all CDN assets.

Additional Verification Scope Notes

You can reference the fixed Daily Code commit and existing Node.js syntax check results. However, actual browser rendering, library CDN responses, and functionality across all devices have not been verified. Please verify actual behavior in your own environment using the Console and Network tabs.

Document information

Article title
Manipulating Chart.js Bar Charts: An Experience Featuring Currency Values, Zeros, and Totals
Published
Updated
Source
https://papanda925.com/?p=18283&lang=en

License: Text and original figures for which this site holds the relevant rights are available under CC BY 4.0 , unless otherwise noted. This article may include content created or edited with generative AI. If code has a separate license notice or a linked GitHub repository license, that license takes precedence for the code. Quotations, third-party materials, images, and trademarks are excluded from this license. Usage policy

Copied title and URL