How to make scatter plot in google sheets using 2 columns as X and Y values and the 3rd columns to get color of that point? - google-sheets

I have 3 columns in a google spreadsheet
Runs Balls Result
24 24 W
50 20 W
10 5 L
12 10 L
5 2 L
Now I want a scatter plot to be made, such that Runs and Balls are the X and Y axes, and the color of the point is determined by the values in the column Result.
How do I achieve this?

You could separate your second column (y-value, "Balls") into two separate columns, depending on if the Result is W or L. In other words, make a chart based on three columns instead of two. This way, two different colors will be assigned automatically when the chart is generated. (Later, you can change these colors by double-clicking on the chart to get to Chart Editor -> Customize -> Series -> Format -> Color).

There seem to be no good solutions here. Answer from Monaco works but is inconvenient in cases. I settled for adding the third column as a label for the second one.

Related

dynamic range of columns as dimensions

I have a spreadsheet that looks something like this:
Harvest stats
2020-01. 2020-02. 2020-03. 2020-04.
Apples 2 3 3 4
Oranges 3 1 2 6
I would like to draw a timeline plot in datastudio with the dates in the X axis and #of fruits in the Y-axis? Is there any way to specify a range of columns as dimensions as opposed to manually adding them to the dimensions?
Your source is Google Sheets? Yes, then add another sheet and paste the values from the first one transposed.
Data Studio itself cannot pivot / unpivot data.

Google charts how to display friendly time duration labels?

I am trying to build a graph highlighting response times percentiles
On the X axis I have the percentiles from 1 to 100
On the Y axis, I have the the response time in seconds (I used a log scale).
To make the graph readable, I'd like to show friendly labels for values of the Y axis (or the datapoint themselves). It also makes sense to use the log of the duration so I can easily show days, weeks or months on the same graph. I found out it's possible to add labels to a series.
The problem, is that I have too many values, so if I show the friendly label on each datapoint, it's too hard to see anything
Here is how it looks like
When I see this, I say to myself, that it would make sense to only show the data label for one out of X datapoints (in this graph, maybe one out of 4 would look rather neat). Is there some way to easily do this ? Or maybe there's some other approach that could be used to have a nice graph representaiton of durations ?
Also, is there a way to "translate" the values of the Y axis instead of adding the labels on the datapoints ? (the number of seconds does not make sense but the number of days or months does, I'm using a Ruby helper to generate those values, but if something similar exists in Google I'd gladly take it)
EDIT : the source sheet if you'd like to experiment
The solution could be to create an additional column specifically for annotations and specify it as a label for the series. I did the following:
Add a new column Annotation
Fill it with a formula =if(MOD(ROW(),5)=0,B2,"") so that every fifth row has a value
Chart editor -> Setup -> Series -> Label point to the Annotation column
Chart editor -> Customize -> Series -> Data labels -> Type point to the Custom
Result:

Add a vertical line to Google Sheet Line Chart

I have a sheet with a line chart, now I'm trying to do something maybe very simple: I would like to add to this chart a vertical line using a value in a cell.
So I have this line chart
And a cell with the date 2016/01/01, I would like to have a vertical line through all the chart on the cell date
I can't figure out how to do it...
This is a copy of that sheet: https://docs.google.com/spreadsheets/d/1oeiwmeDT8pUVqBQvoE_cqk7mZxxvD5moZr41Vp4IN2I/edit?usp=sharing
I would like to show a vertical line using the "Purchase date"
I had the same problem and created a solution to overcome limitations of Google Sheets charts.
The main idea is to create an additional line in the chart, with only two points, both with the desired date. The value of the first point is 0 and the last has the maximum value of the Y axis. This way, the line always covers the entire height of the chart.
Screenshot of the Chart
Note that it is necessary to add two new values in the X axis (highlighted in blue on the sheet). Don't worry with the fact they are repeated. Google Sheets handles it correctly.
These values can be placed at the beginning of the lists. This way, it is possible to add new values at the end of them.
This solution can be viewed in: "[GoogleSheets] Dinamic Vertical Line in a Chart"
To change position of red line, just select a different value in "Purchase date" (yellow cell).
I made a merge of my first solution with the one suggested by dimo414 and created a new solution with two variations.
In the previous version of the spreadsheet, there were only two points to draw the vertical line.
In the new version, a third point were inserted to show intersection between the line and the real curve. A new column was also created, containing only a label for the new point.
The result is:
Theses changes can be seen in green background in sheets 'Dashboard_v2' and 'Dashboard_v3' of the SpreadSheet.
To determine coordinates of the new point, two approaches were used:
Search Purchase Date directly in the dataset (see sheet 'Dashboard_v2')
If the goal is to highlight only points of intersection that belong to the original dataset, it is just necessary to VLOOKUP() the date in the dataset.
Interpolate the two points immediately smaller and larger than the purchase date (see sheet 'Dashboard_v3')
Given the points [x1,y1], [x2,y2] and a value of x (where x1 <= x <= x2), its possible to find an interpolation point [x,y] with the following formula:
y=(y2-y1)*(x-x1)/(x2-x1)+y1
Although this formula is easy to implement, find the correct points to interpolate is more challenging and requires a bit of creativity.
At first, I thought of using a JS script to make things easier, but decided to use only builtin functions.
By the way, different approaches to find [x1,y1] and [x2,y2] are welcome.
To make things easier to understand, each point coordinate is determined in a different cell (see L2:M5) and the point of intersection is in L6:M7.
Of course, its possible to join all of them in just one cell, but I thought it would be harder to understand.
To close, one more detail: According to above definition, interpolation formula is valid only if (x1 <= x <= x2). Thus, both cells C2 and M6 have protections to limit the value of 'x'.
One way is to add a label to your x-axis.
For example, this is a chart that plots weight against date, with a label "Cheat Day" on 2021-07-21
For the data:
Date
Label
Weight (kg)
Weight Goal (kg)
2021-07-19
83.85
75
2021-07-20
84.55
75
2021-07-21
Cheat Day
83.8
75
2021-07-22
84.95
75
2021-07-23
83.75
75
Go to Edit the chart > Setup > Under X-axis > Click on ••• next to your "Date" column > Add labels > Select the column "Label" as your label.
Your Chart Editor > Setup should look like this:
you can have it like this, unfortunately not programmatically. the only way is to insert a line via Drawing and position it manually where needed.
spreadsheet demo
As best I can tell there isn't a way to add a vertical marker line to a chart in Google Sheets. One option that may be "good enough" in many cases is to "Add notes to a data point" and then use "Format data point" to make the point more visible. Here's an example, from your spreadsheet:
Unfortunately one limitation with this approach is you can only label a data point in the data set the chart is displaying. In your case the date you wanted to mark with a line isn't in the data set, so this won't work directly. You might be able to introduce a separate data series consisting of just that date and then add a note to that data point, but I haven't fiddled with it enough to make it work.

How to generate a certain amount of numbers and spread them randomly across a grid?

I want to generate the number 2 5 times and the number 1 10 times. I'm trying to spread these across a String Grid in Delphi randomly. I also want to fill the rest of the grid that isn't 1 or 2, with 0's. I have no idea how to even start here.
It would look something like this (P stands for player and there would only be 5 2's and 10 1's): https://gyazo.com/aeef05c3a92ce7847c0f42ad40faa733
Given a grid with dimensions m×n, create an array of length m * n. Put five 2's and 10 1's in the array, and fill the remainder with 0's. (We'll assume the product of m and n is at least 15.) Shuffle the array. Copy each element of the shuffled array into successive cells in the grid.
While the approach represented in Robs answer will do the job I personally think it is way to complicated for it's purpose.
So what would be more simpler approach?
Well your goal is to place these numbers at random positions in grid.
How do you determine position of some object in a grid? You do it by its X (Column) and Y (Row) coordinates.
So how do you get random position in a grid? Simple chose two random values for X and Y coordinates.
As for placing certain numbers of number 1 and number 2 use two simple loops.

Skip x axis points on highcharts

I am trying to figure out if this can be done with Highcharts. I have 5 different series on my chart and my X axis is made up of Dates. My problem is this, lets say Series 1 has 2 data points 10 and 15 with dates of 5/1/2013 and 5/3/2013. My second Series has Data that is 15 and 20 with dates of 5/1/2013 and 5/4/2013.
What will end up happening is that 5/1/2013 will show up twice and 5/4/2013 wont show up at all.
Now if I remove the duplicate dates, it causes another issue if Series 3 is 5, 10 with 5/3/2013 and 5/4/2013, Instead of the 5 being listed on 5/2/2013 it is showing up on 5/1/2013.
Is there any way around this? or will I have to make different charts for each Series I want listed on there?
Thanks,
Chris

Resources