Mathematica Plot 2d image from 3D data Mathematica

AI Thread Summary
The discussion focuses on plotting a 2D image from a large CSV dataset containing Y position, X position, and intensity values, specifically for laser microscopy. The user encountered issues with their initial approach using ListPlot3D, which requires a rectangular array. Suggestions include using ArrayPlot with a partitioned matrix of intensity values, ensuring the data is in a square format. Concerns were raised about maintaining the correct mapping of Z values to their respective X and Y coordinates, which were addressed by confirming the method preserves this relationship. Additionally, users discussed modifying color functions to achieve a grayscale image in the plots.
abikutn
Messages
10
Reaction score
0
hello guys,

I have a CSV file with hyuge set of data devided into 3 cols. Y position X position and corresponding intensity values.

I want to plot the image , my thesis is laser- microscopy. so a 2D plot ( density plot ) based on these values.

The following is what I have tried so far!
plotdata = Import["test2 10 10.csv", "Table"]
ListPlot3D[plotdata]
But above results in : is not a rectangular array larger than 2 x 2. >>

Can anyone help me how to deal with such a huge set of data and how to plot it as 2D image ( Grey scale is also fine )

Thank you,

abhi - abikutn@gmail.com
 

Attachments

Physics news on Phys.org
If your complete dataset is a square matrix of {x,y,z} in the same form as your small sample then this may work for you

xyz = Import["test2 10 10.csv"];
z = Partition[Map[Last, xyz], 10];
ArrayPlot[z, ColorFunctionScaling -> True]

That depends on your data being a square matrix and you need to set the size of the partition to restore your data to be a square matrix of z values.

This has been done of samples with a million data points and might work with larger values if needed.
 
Thanks for your reply and support

"That depends on your data being a square matrix and you need to set the size of the partition to restore your data to be a square matrix of z values. "

by saying this: suppose I have 10 by 10 pixels with some intensity values Z for each pixel.

So partition meaning I have to split it 10 by 10 so that its a square matrix ?

and what is the meaning of machine size values ?

Thank you
 
I suggest you take a look at the CSV file I have attached.

for example I have y{1->10} and x{1->10}
The way the values are recording in the CSV is as:

[step1: y=1, get values for X{1->10}
step2: increment y and repeat process till Y=max]

Will this affect in anyway how the plot forms based on its actual X and Y co ordinates ?
Just a question. I am not sure if you got my understanding.Basically won't the code you gave mix up all Z values with respect to their X and Y ?
 
Remove that "Table" from import, use something like this:
Code:
plotdata = Import["test2 10 10.csv"]
z = GatherBy[plotdata, First][[All, All, 3]]
ArrayPlot[z, ColorFunction -> "Rainbow"]
 
abikutn said:
I suggest you take a look at the CSV file I have attached.
;...
Just a question. I am not sure if you got my understanding.Basically won't the code you gave mix up all Z values with respect to their X and Y ?

I did use your CSV file to write and test the example I gave you.
Thank you for the example data. That makes it much easier to provide correct answers.
I believe that it does correctly keep the position of the Z values.

You should ALWAYS carefully test any code to make sure that it is correct.
Compare your matrix before any changes and after my calculation to verify this.

I had intended to use an even simpler method of obtaining the Z values but for some reason I just didn't think of a simpler method when I posted my first reply.
 
Thank you! ... That was a good start ...

in the list density plot how can I change the color variation to grey scale image ? Is there a colorscaling function for grey scale just like how it can be done for RGB with ranibow ?

Abhi
 
Just remove ColorFunction -> "Rainbow",
e.g.

Code:
ArrayPlot[z]
 

Similar threads

Replies
2
Views
2K
Replies
6
Views
4K
Replies
2
Views
14K
Replies
1
Views
3K
Replies
1
Views
7K
Replies
1
Views
4K
Replies
3
Views
5K
Replies
2
Views
7K
Replies
2
Views
5K
Back
Top