Dismiss Notice
Join Physics Forums Today!
The friendliest, high quality science and math community on the planet! Everyone who loves science is here!

Plotting in Mathematica

  1. Jun 21, 2008 #1
    I'm going through "The Chaos Cookbook" right now, a fairly old book on chaos programming. A bit too old I'm afraid, all the programs are written in Pascal and Basic. I had been using Excel (well, Open Office Calc) to do the iterations and graphing, but I feel that the size of the programs are out growing the scope of Excel. I wrote a C++ program to create the data points for a Martin diagram of the Logistics equation (the data is here http://www.box.net/shared/kr2cz5es0g if you care).

    My question is how can I get mathematica to turn these data points into a graph, and/or is there perhaps better software I should be using for something like this (The main advantage is I get mathematica for free from my university).

    It might be worth adding I can, pretty much, change the format of the data from that file at will if someone thinks a different format would work better.

    Thanks for your help!
  2. jcsd
  3. Jun 22, 2008 #2


    User Avatar
    Science Advisor
    Homework Helper

    You could start by something like

    Code (Text):

    data = Import["data.txt", "Data"];
    and then probably do some processing (filter the data, make a fit, etc) as your data looks a bit strange.
  4. Jun 22, 2008 #3
    After sorting your input in DPlot (www.dplot.com), the default plot you get is shown here:


    If you try DPlot and have any questions please let me know at support@dplot.com.

    David Hyde
  5. Jun 22, 2008 #4


    User Avatar
    Science Advisor
    Homework Helper

    Hmm, I found something strange in Mathematica 6.0. If there are still empty lists (corresponding to empty lines in the source file) in the data you feed to ListPlot, you get a junk image. So you have to filter those out on import. The following does work and plots all the data points (also those missing in David's post):
    Code (Text):

    data = Select[Import["data.txt", "Data"], Length[#] > 1 &];
    (By the way you have 20 newlines and 845 obsolete points in your list)
  6. Jun 22, 2008 #5
    Here is another way to deal with the empty lists:

    Code (Text):
    data = DeleteCases[Import["data.txt", "Data"], {}];
  7. Jun 22, 2008 #6
    Whoops, I overlooked the blank lines, as did DPlot. You can copy/paste the individual data sets (assuming that's what they are) or send each set to DPlot programmatically, then Edit>Swap X,Y, Edit>Sort, and Edit>Swap X,Y to restore the original order. It isn't clear if this is what you're after or not, but here's the result:

  8. Jun 23, 2008 #7
    Thanks everyone for your input,

    To David: I tried DPlot over the weekend and could manage to make it give me anything, I'll re-read your second post and try again this evening. I really could use a program that can do things like this easily, so I'm hoping it works out.

    To CompuChip and Crosson: I tried your suggested line of code to no effect, I checked the mathematica help file and it appears that 5.2 doesn't support the function "Data" for the import command. I tried to fiddle around with the "List" command and the "Table" command but only ended up with blank graphs.

    I've changed up my program to get rid of the white spaces and got rid of the bad data. The new list can be found at the same place as the old list. http://www.box.net/shared/kr2cz5es0g

    The data itself is from the logistics equation x1 = k * x * (1-x). Each set of data points is formatted as: x1 , x . Then x1 becomes the new x and the program is run again to produce a new set of points. Knowing I could get it working in excel so I threw it in and got

    note: this is with many more data points than in the above text file, plus I switched the x - y axis for cosmetic reasons.


    This takes a long time to process in excel though so I'm still hoping for another option such as mathematica (which would be nice for many reasons) or DPlot.
  9. Jun 23, 2008 #8


    User Avatar
    Staff Emeritus
    Science Advisor
    Gold Member

    Consider gnuplot. It's stable, easy to use, and has been around forever.

    - Warren
  10. Jun 23, 2008 #9
    There was so much scatter in your data that I thought you must have intended the blank lines to be delineators between data sets... or something.

    With a text file containing comma- or tab-separated values like yours, you can just drag the file onto the DPlot window and it will interpret it correctly. Alternatively after selecting File>Open, pick file type "D Multiple columns e.g. CSV files".

    When I do that with your updated file and turn symbols on, lines off, I get:


    Should probably take any DPlot questions off-line - I don't mind answering questions but as a newbie here I don't want to wear out my welcome, either. You can get me at support@dplot.com.
  11. Jun 24, 2008 #10


    User Avatar
    Science Advisor
    Homework Helper

    Try "CSV"

    You can probably easily make the list in Mathematica to begin with, using NestList and related functions.

    To do this in Mathematica, you can just map the elements of the list to Reverse:
    Code (Text):
    ListPlot[Reverse /@ data]
Share this great discussion with others via Reddit, Google+, Twitter, or Facebook