I'm using the next Mathematica command in order to plot molecules:

ChemicalData["name", "MoleculePlot"]

But I'm not sure if the Mathematica database of molecules is complete.

I'm trying to plot lactic acid.

The problem is that it doesn't seem to exist a name of the molecule that makes the command work

ChemicalData["Lactic acid", "MoleculePlot"]


ChemicalData["2-Hydroxypropanoic acid", "MoleculePlot"]

So, I want to know if anyone has any suggestions about what to do in these cases.

  • $\begingroup$ No database of molecules is complete. $\endgroup$
    – user28174
    Dec 9, 2018 at 9:14
  • 2
    $\begingroup$ Yes .. But that one is an important molecule $\endgroup$
    – Nau
    Dec 9, 2018 at 19:38

3 Answers 3


I've struggled with How Mathematica expects the end-user to interact with knowledge databases for quite some time. While this solution is likely not universal, it has been reasonably successful for many of my searches.

Using CTRL= to perform a free-form Wolfram Language input followed by using CanonicalName typically provides the appropriate string to conduct additional property searches:

enter image description here

Jason B. notes in the comments that one can obtain the same information programmatically through Interpreter["Chemical"]["lactic acid"]. I've included it in the answer in case the comments get removed in the future.

  • 4
    $\begingroup$ For a programmatic way to get the entity, you can use Interpreter["Chemical"]["lactic acid"]. $\endgroup$
    – Jason B.
    Dec 8, 2018 at 16:48
  • 4
    $\begingroup$ Thankfully, one is not forced to refer to citric acid as LemonAcid. $\endgroup$ Dec 8, 2018 at 22:24
  • $\begingroup$ @DavidRicherby Seriously! $\endgroup$ Dec 8, 2018 at 22:53
  • $\begingroup$ Actually, in Swedish, lactic acid is called mjölksyra (milk acid). $\endgroup$ Dec 8, 2018 at 23:33
  • 1
    $\begingroup$ @JackLaVigne I use LiceCAP on Windows. I have not tried to do screen capture on Linux devices, although a google ssearch reveals a couple of free options. No clue about MacOS. $\endgroup$ Dec 18, 2018 at 13:22
ChemicalData[Entity["Chemical", "MilkAcid"], "MoleculePlot"]


Entity["Chemical", "MilkAcid"];


lactic acid

  • 1
    $\begingroup$ But if you already know the correct name (in this case, "MilkAcid"), why not instead just use ChemicalData["MilkAcid", "MoleculePlot"]? $\endgroup$
    – theorist
    Dec 19, 2018 at 22:46

What has been missed in previous answers is that one should have tried entering the name of the chemical under consideration in camel case:

   {Entity["Chemical", "MilkAcid"], Entity["Chemical", "LPlusLacticAcid"], 
    Entity["Chemical", "DLLacticAcid"], Entity["Chemical", "PolyDLLactide"],
    Entity["Chemical", "PolyLLactide"]}

which returns a bunch of matches. Note that the first entry corresponds to the "milk acid" entity featured in bob's answer. The next two entries correspond to the natural enantiomer of lactic acid and the racemic form, which may also be of interest.

Similarly, evaluating ChemicalData["LacticAcid", "MoleculePlot"] will show the expected plots, at least for the first three entries:

ChemicalData["LacticAcid", "MoleculePlot"] // GraphicsRow

lactic acid molecules

The OP almost got it by trying out the IUPAC name, what was not done was to write the name in the expected camel case:

   {Entity["Chemical", "MilkAcid"], Entity["Chemical", "DLLacticAcid"],
    Entity["Chemical", "PolyDLLactide"]}
  • $\begingroup$ As an instructor, I wonder if Mathematica 'students' would benefit from documentation that describes the use of camel case or if this is a situation where one has to simply learn it on her/his own. $\endgroup$ Mar 17, 2019 at 12:25
  • $\begingroup$ @bob, I personally think the docs could stand to be more explicit; unless you're already "used to" how Mathematica does things, you wouldn't readily think about trying camel case. $\endgroup$ Mar 17, 2019 at 12:27

Not the answer you're looking for? Browse other questions tagged or ask your own question.