Start with a table ChatGPT can read

For a CSV or spreadsheet, put a descriptive header above each column and one observation in each row. OpenAI's data analysis guidance recommends that structure and warns that a large or poorly structured file may not be read completely. You can paste the four-row CSV below directly into a chat. For your own file, use the attachment control and ask ChatGPT to display the columns, row count, and first few records before it draws anything. Check that preview against the original file, especially if it has several sheets or tables.

MonthCases resolved
Jan120
Feb135
Mar132
Apr160
Four-month practice data
month,cases_resolved
Jan,120
Feb,135
Mar,132
Apr,160

The question here is how many cases were resolved in each month. The table does not say how many cases arrived, how long agents worked, or whether a target was met. If these were real records, the person responsible for the metric would also need to define what counts as resolved and when each month begins and ends. Write that definition down before asking for a chart; a plausible image cannot settle an ambiguous measure.

Match the input method to the source. A few checked rows are easy to paste, as in Examples 1–6. For a larger CSV, attach the file and ask ChatGPT to name its columns, row count, and any missing values before drawing. For an Excel workbook, also name the sheet and table range you want; a workbook may contain notes or multiple tables that should not become chart data. If the preview has the wrong rows, fix that before asking for a prettier chart. The chart is the last step of a data selection task, not a substitute for it.

Adaptable chart request for your own file
Use [file or pasted table], specifically [sheet or range if needed]. One row represents [unit]. First show the row count, column names, and the exact rows or grouped table you will plot. Make a [chart type] comparing [fields] to answer [question]. Treat blanks in [field] as unknown, not zero. Label units and axes, keep the source order where it matters, and provide a static PNG plus a short text description. State any rows you excluded or combined.

Replace every bracketed item before using that request. “One row represents one ticket” leads to a different calculation from “one row represents one month.” A chart made from raw tickets needs a count or other aggregation; a monthly totals chart does not. If you cannot say what one row means, inspect the dataset with its owner before plotting it.

Choose a chart that fits the question

Ask ChatGPT to recommend a chart from the question and the data shape, then decide whether its choice makes the intended comparison easy to read. These are starting points. The worked examples below show what to request and how to check the result; they do not prove that the same chart will appear for every account or file.

QuestionUseful starting chartCheck before sharing
How do a few categories or monthly totals compare?Bar chartBars start at zero; category order, units, and labels match the table.
How many raw records fall in each category?Grouped horizontal bar chartCount records before plotting; grouped counts add back to the original row count.
How does one measure change over time?Line chartDates are in time order; a missing observation is not silently filled or joined across.
How do two time series on different scales move?Two aligned line chartsEach panel names its measure and scale; do not compare slopes as if the axes were identical.
How are individual numeric observations distributed?HistogramCheck the bin widths and how many observations each bin contains.
Do two numeric fields move together across records?Scatter plotCheck which record each point represents, both axis units, and whether missing pairs were dropped.
How is a complete total divided among a few non-overlapping parts?Pie chart, or a bar chart for easier rankingThe amounts add to the stated total; percentages add to 100%; every part appears once.

A bar's length represents its value, so a nonzero baseline can make small differences look much larger. A line chart tracks positions over time; it can use a narrower, clearly labeled scale when that helps reveal variation. If you put visits and trials on separate axes, the visual slopes depend on two independent scale choices. Aligned panels make those choices visible. A histogram groups continuous numbers into intervals; changing the intervals can change the story. A pie chart needs a single complete denominator, while a scatter plot needs paired measurements for each point.

Example 1: make and check a bar chart

Paste the CSV above, or attach the practice file. Tell ChatGPT exactly which column to plot. The following prompt asks for a chart and a table, so you can compare the picture with the numbers without re-reading the original message.

Create the four-month chart
Create a static bar chart from this fictional CSV. Show months Jan through Apr in order, title it Support Cases Resolved, start the count axis at zero, label each bar with its value, and use one color for all bars. Also show the four-row data table and provide a downloadable chart image. The numbers do not establish a target, productivity, or cause.

In a September 26 ChatGPT Temporary Chat using the Instant setting, this request produced a downloadable PNG. The chart showed 120, 135, 132, and 160 in order, with bars rising from a visible zero line. Its reply said a four-row table was shown, but no separate table appeared in that reply. A follow-up asking for the missing table and alt text returned both. This is a small but useful failure to catch: check the actual response rather than accepting its description of what it supplied.

Read each value label against the source table. January is 120 and April is 160, so April's count is one-third higher than January's count: (160 − 120) ÷ 120 = 33.3%. That arithmetic says nothing about productivity because this CSV has no workload or staffing data. Confirm that March's 132 has not been omitted just because it is slightly below February's 135. Check the chart at the size readers will see, where small axis labels are easier to miss.

Ask for a short text alternative as well. A suitable one for this image is: “Bar chart of cases resolved: 120 in January, 135 in February, 132 in March, and 160 in April, with a zero baseline.” Keep the table available when exact values matter; alt text does not have to carry every detail of a larger dataset.

Example 2: show two series without hiding a missing month

A second practice table has visits and trials on different scales. March has 1,150 visits, but its trial count is blank. Blank means unknown here, not zero.

MonthVisitsTrials
Jan1,000100
Feb1,200132
Mar1,150Unknown
Apr1,400168
May1,600176
Jun1,500180

Paste this CSV into ChatGPT before the prompt below. Leave the March trial cell empty:

Two-series practice data
month,visits,trials
Jan,1000,100
Feb,1200,132
Mar,1150,
Apr,1400,168
May,1600,176
Jun,1500,180
Keep the gap visible
Now create a second, separate static chart from this fictional CSV. The question is how visits and trials changed from January to June. Use two vertically aligned line charts with one shared month order and separate labeled y-axes, because the series use different scales. In the trials chart, March is unknown: leave a visible gap rather than plotting zero or connecting February to April. Provide a downloadable PNG, a six-row table preserving the blank, and report each series' January-to-June percentage change and peak month.

ChatGPT returned two aligned panels and a table with the March trial cell blank. In the lower panel, its line stops after February and resumes in April. It reported visits up 50% from January to June, with a peak of 1,600 in May. Trials rose 80% between the same endpoints and peaked at 180 in June. Independent arithmetic gives (1,500 − 1,000) ÷ 1,000 = 50% and (180 − 100) ÷ 100 = 80%. Those endpoint calculations do not require a March trial value.

Two aligned ChatGPT-generated line charts of visits and trials from January to June; the trials line has a gap at March because that value is unknown
ChatGPT kept March trials missing in a second downloadable PNG. The panels use separately labeled scales, so their slopes should not be compared directly. Credit: Grow AI Skills retained ChatGPT Temporary Chat output, September 26, 2026. Open full-size image.

Inspect the image as well as ChatGPT's description. The two panels have different y-axis ranges, so their slopes are not a direct comparison of the size of the two changes. The blank March trial cell must remain blank in any chart data table you export. If ChatGPT fills it, ask it to restore the missing value, regenerate the chart, and show the plotted table again. Do not accept an interpolation unless the source owner has chosen and documented a method.

Example 3: count raw records before drawing a bar chart

The first bar chart started with four monthly totals. This example starts one step earlier: each row is a ticket, and the chart needs counts by channel. If ChatGPT plots ticket_id as a number or treats each row as its own category, the result answers the wrong question. The 12 fictional records below deliberately include a tie between Chat and Phone.

Twelve raw ticket rows
ticket_id,channel
T01,Email
T02,Chat
T03,Email
T04,Phone
T05,Chat
T06,Email
T07,Email
T08,Self-service
T09,Phone
T10,Chat
T11,Email
T12,Phone

Paste those rows after this request. The chart should have four bars, not 12. Ask for the intermediate count table because it is the quickest way to see whether the grouping step worked.

Group tickets by channel
Use only this fictional CSV. Each ticket_id is unique. Count rows by channel and make a static horizontal bar chart titled Tickets by Channel, sorted by count descending. Start the count axis at zero and label each bar. Do not treat ticket IDs as numeric values. Show a four-row grouped count table, the total row count, and a downloadable PNG. These counts alone do not establish channel performance.

In the retained ChatGPT run, the grouped table was Email 5, Chat 3, Phone 3, and Self-service 1. It reported 12 total rows and supplied a downloadable PNG. The two middle categories have equal bars; their order in a descending sort is a display choice, not a difference in count.

ChannelTickets
Email5
Chat3
Phone3
Self-service1
Total12
Horizontal ChatGPT bar chart of 12 fictional tickets grouped by channel: Email 5, Chat 3, Phone 3, Self-service 1; count axis begins at zero
Twelve ticket rows were grouped into four channel counts. The bars and their labels were checked against the original rows. Credit: Grow AI Skills retained ChatGPT Temporary Chat output, September 26, 2026. Open full-size image.

Audit the grouping yourself: 5 + 3 + 3 + 1 = 12, so no record vanished from the chart. Count the Email rows in the pasted CSV and verify the longest bar ends at 5. Check that the horizontal axis begins at zero and that the ticket IDs do not appear as numeric measurements. If a real export contains repeated ticket IDs, decide whether the question is “number of rows” or “number of distinct tickets” before plotting. Those answers can differ. A channel's larger count also says nothing by itself about speed, quality, workload, or customer preference; you would need the appropriate denominators and definitions to compare performance.

Example 4: make a histogram with explicit bins

A histogram answers a different question from the monthly bar chart: how many individual observations fall within each numeric range? Here each row is one fictional case's resolution time in minutes. Fix the bin edges before asking for the chart; otherwise ChatGPT may choose a different number of bins and produce a visually different distribution from the same values.

Twenty resolution times
duration_min
12
18
24
27
31
35
38
42
46
49
53
57
61
68
74
78
81
88
105
118
Set the bin contract
Use only this fictional list of 20 resolution times in minutes. Create a static histogram titled Resolution Time Distribution with four equal-width bins [0,30), [30,60), [60,90), [90,120). Label the horizontal axis Minutes and vertical axis Number of cases. Show the bin edges and count on each bar, a four-row bin-count table, the total number of observations, the median, and a downloadable PNG. Do not smooth the distribution or call 118 an outlier without a defined rule.

The notation [30,60) includes 30 and excludes 60. Count from the source: four values are below 30, eight are from 30 to below 60, six are from 60 to below 90, and two are from 90 to below 120. Those counts total 20. The sorted middle values are 49 and 53, so the median is (49 + 53) ÷ 2 = 51 minutes. ChatGPT's table gave 4, 8, 6, 2 and a median of 51.

MinutesCasesSource check
0 to <30412, 18, 24, 27
30 to <60831 through 57
60 to <90661 through 88
90 to <1202105, 118

The first PNG was numerically correct but had a layout defect: the label above the tallest bar touched the title. We asked ChatGPT to regenerate the same four bins and counts with more top space or labels inside the bars. The replacement below places the labels inside each bar, with no title collision. This matters because a successful calculation does not make an unreadable export ready to publish.

ChatGPT histogram of 20 fictional resolution times in four 30-minute bins with counts 4, 8, 6, and 2; labels are inside the bars
The first PNG had a label touching the title. This replacement keeps the checked bin counts and places the labels inside the bars. Credit: Grow AI Skills retained ChatGPT Temporary Chat output, September 26, 2026. Open full-size image.

Check the replacement's x-axis boundaries at 0, 30, 60, 90, and 120; the bars should meet because these are adjacent equal-width ranges. Do not call 118 an outlier simply because it sits in the last bin. That label requires a defined rule and enough context to make it useful. If you change the bins, keep the original values and state the new edges so a reader can understand why the shape changed.

Example 5: plot paired measurements without claiming cause

A scatter plot uses two numeric values from the same record. Each fictional location below has an email send count and a reply count. The location code is an identifier for checking the points, not a third numeric axis. This is a good shape when the question is whether larger send counts tend to appear with larger reply counts across locations.

Eight paired observations
location,email_sends,replies
A,100,8
B,140,13
C,160,9
D,180,17
E,210,15
F,240,22
G,260,18
H,310,26
Draw the pairs, not a trend claim
Use only the fictional location-level CSV. Make a static scatter plot titled Email Sends and Replies. Put email_sends on the horizontal axis and replies on the vertical axis, label each point with location, show all eight points, and do not connect points or add a fitted line. Show the eight plotted pairs in a table and provide a downloadable PNG. Report which location has the most replies and name one pair that shows why more sends do not always mean more replies. Do not claim that sending more emails caused replies.

ChatGPT returned all eight pairs and a labeled scatter PNG. H has the most replies, 26, at 310 sends. B and C are a useful manual check: C sent 160 emails, 20 more than B's 140, yet C had 9 replies versus B's 13. Verify those two points are at the expected x and y positions. Also count eight visible points; a missing or duplicated dot is easy to overlook when labels are small.

ChatGPT scatter plot of eight fictional locations, with email sends on the x-axis and replies on the y-axis; all points are labeled A through H
Eight plotted pairs were checked against the source CSV. B has 140 sends and 13 replies; C has 160 sends and 9 replies. Credit: Grow AI Skills retained ChatGPT Temporary Chat output, September 26, 2026. Open full-size image.

The cloud of points may suggest an association in these eight fictional records, but the chart does not establish that sending more messages caused more replies. It also compares counts, not reply rates. For example, B's 13 ÷ 140 is about 9.3%, while C's 9 ÷ 160 is about 5.6%. If the actual decision concerns effectiveness, calculate and plot a defined rate, and check whether locations used comparable audiences and periods. Do not add a regression line just to make eight points look authoritative.

Example 6: show parts of a whole and check the denominator

A pie chart is reasonable when a few non-overlapping categories make up one complete total. These five fictional monthly expense amounts sum to 1,000 units. The denominator is the full 1,000; if a category is missing or the rows overlap, the slices no longer describe the whole.

Five expense categories
category,amount
Rent,400
Food,250
Transport,150
Utilities,120
Other,80
Make and verify a share chart
Use only this fictional monthly expense table. Make a simple flat static pie chart titled Monthly Expense Share. Label each slice with category and percentage, use a readable legend if needed, and do not use 3D effects. Show the source amounts, the total, and exact percentages in a separate table, then provide a downloadable PNG. Check that all categories are included and the percentages sum to 100%. If labels crowd together, say so and use a horizontal bar chart instead of claiming the pie is readable.

The retained output labels all five slices: Rent 40%, Food 25%, Transport 15%, Utilities 12%, and Other 8%. Check the math from the source: 400 ÷ 1,000 = 40%; 80 ÷ 1,000 = 8%; and 40 + 25 + 15 + 12 + 8 = 100. The PNG is flat rather than 3D, and its category labels remain separate at the saved image size.

CategoryAmountShare
Rent40040%
Food25025%
Transport15015%
Utilities12012%
Other808%
Total1,000100%
ChatGPT pie chart of five fictional monthly expense categories: Rent 40%, Food 25%, Transport 15%, Utilities 12%, Other 8%
The amounts add to 1,000 and the five displayed percentages add to 100%. The adjacent table gives the exact amounts. Credit: Grow AI Skills retained ChatGPT Temporary Chat output, September 26, 2026. Open full-size image.

Before using a real pie chart, confirm that every row belongs to the same period and currency, and that no amount is counted twice. If “Other” hides several important categories, show the underlying table or split it with an explicit definition. If readers need to rank close values, compare many categories, or read exact amounts, use a sorted bar chart beside or instead of the pie. The picture shows shares; the adjacent table should carry the exact amounts.

Review the result and save the usable files

OpenAI's chart instructions describe a download control on generated charts; the output is usually a PNG. They list bar, line, pie, histogram, scatter, and other chart types, although the available display and interactive controls can vary. In all six examples here, ChatGPT supplied downloadable PNG files. Save the source CSV or pasted table too. An image alone does not preserve enough information to check a later revision.

  • Compare the plotted table with the source: row count, category totals, month order, every value, and every blank. If ChatGPT grouped, filtered, or excluded rows, ask it to show that transformation.
  • Inspect the marks, not just printed labels. For bars, check the zero line and heights. For lines, look for missing points and invented connections. For histograms, check bin edges and counts; for scatter plots, check each x/y pair; for pies, check the denominator and total share.
  • Read the title without its footnote. Remove a claim about a target, cause, rate, or success if the source does not support it.
  • Check the downloaded image at its actual display width. Read the axis units and value labels, watch for annotations touching the title, and make sure color is not the only way to tell series apart. Ask for a larger or simpler export if labels fail.
  • Keep a short alt text description and, for a chart with several values or a gap, an adjacent data table or longer description.

A usable handoff has three parts: the original data, the grouped or plotted table, and the final chart image. If you change a value or bin later, regenerate all three from the same revision. The editorial reference PNG and editable SVG in the older practice kit were rendered by Grow AI Skills from the four-row CSV. They are separate from the six ChatGPT-generated PNGs inline on this page. The text equivalent describes that editorial bar chart.

Fix common problems before sharing

What you seeWhat to do
The file preview has the wrong row count or sheet.Name the sheet or table you want, ask ChatGPT to show its columns and row count, and compare them with the file. If it still cannot read the whole source, work from a smaller exported CSV that you have checked.
A category chart has one bar per source row.Say what one row represents, request the grouped count table first, then chart that table. Confirm grouped counts sum to the selected source rows.
You get advice or code, but no chart image.Ask it to render a static chart and attach a PNG. If chart generation is unavailable in that chat, keep the checked data table and make the chart in a spreadsheet instead; do not describe an unrendered plan as a finished image.
Labels overlap the title or disappear at article width.Name the exact collision, as we did with the histogram's [30,60) label. Ask for more space or labels inside the bars, then open the replacement PNG and check again.
A histogram count changes unexpectedly.State exact bin edges and which boundary each bin includes. Recount source values in every interval; the bin counts must add to the observation count.
Pie percentages fail to total 100%.Verify the denominator, missing categories, duplicated rows, and rounding. Show exact amounts in a nearby table; use a bar chart if many small slices make labels unreadable.
You need to update the chart next month.Save the source table and the prompt. A PNG is an image, so regenerate it from revised data or build an editable chart in a spreadsheet. Microsoft's chart guide covers that workflow.

Use the optional checker for the practice files

The review kit includes the original editorial bar chart, its source CSV, text equivalent, a Python checker, and its saved result. Put those kit files in one folder and run python3 chart-evidence-gate.py. The checker tests fixed CSV values and selected strings in that SVG and accessibility file. It does not measure bar geometry, inspect any of the six ChatGPT-generated PNGs, verify a real data pipeline, or approve a business interpretation. Use the manual checks above for those decisions.