File:Material-comparison--strength-vs-density plain.svg

Original file (SVG file, nominally 900 × 560 pixels, file size: 60 KB)

Summary

Description
Español: Gráfico de comparación de Resistencia mecánica contra densidad. La gráfica presenta las líneas guía para diseño con peso mínimo.

La resistencia para cada grupo de materiales es:

English: Material comparison plot for Strength versus density. The guidelines for minimum weigth design are added.

The strength for each group of materials is:

Date
Source Own work
Author Nicoguaro

This file was generated using JavaScript and D3.js. And later modified in Inkscape.

<!DOCTYPE html>
<meta charset="utf-8">
<html>
<title>
Material comparison: Strength vs density
</title>

<style>
.ellip {
  fill: white;
  fill-opacity: 0.6;
  stroke-width: 1;
}

.axis {
  font: 18px serif;
}

.axis path,
.axis line {
  fill: none;
  stroke: #000;
  shape-rendering: crispEdges;
}

.grid {
    stroke: lightgrey;
    opacity: 0.4;
    stroke-dasharray: 20, 5;
}
.grid path {
      stroke-width: 0;
}

.hull {
  fill-opacity: 0.4;
  stroke-opacity: 0.7;
  stroke-width: 2px;
  stroke-linejoin: round;
}
</style>

<body>
<script src="http://d3js.org/d3.v3.min.js"></script>
<script>

var margin = {top: 20, right:30, bottom: 30, left: 70},
    width = 900 - margin.left - margin.right,
    height = 560 - margin.top - margin.bottom;

// Setup x
var x = d3.scale.log()
    .range([0, width]);

// Setup y
var y = d3.scale.log()
    .range([height, 0]);

var xAxis = d3.svg.axis()
    .scale(x)
    .orient("bottom")
    .ticks(4, function(d) { return  d; });

var yAxis = d3.svg.axis()
    .scale(y)
    .orient("left")
    .ticks(8, function(d) { return  d; });

// Setup grids
var xGrid = d3.svg.axis()
    .scale(x)
    .orient("bottom")
    .ticks(4)
    .tickSize(-height, 0, 0)
    .tickValues([1e1, 1e2, 1e3, 1e4, 1e5])
    .tickFormat("");

var yGrid = d3.svg.axis()
    .scale(y)
    .orient("left")
    .ticks(8)
    .tickSize(-width, 0, 0)
    .tickValues([1e-2, 1e-1, 1e0, 1e1, 1e2, 1e3, 1e4])
    .tickFormat("");

// setup colors
var cValue = function(d) { return d.Category;},
    color = d3.scale.category10();

var svg = d3.select("body").append("svg")
    .attr("width", width + margin.left + margin.right)
    .attr("height", height + margin.top + margin.bottom)
  .append("g")
    .attr("transform", "translate(" + margin.left + "," + margin.top + ")");

var categories = ["Foams", "Elastomers", "Natural materials", "Polymers",
                  "Nontechnical ceramics", "Composites", "Technical ceramics",
                  "Metals"]

var propX = "Density";
var propY = "Strength";

var unitX = " [kg/m\u00B3]";
var unitY = " [MPa]";

d3.tsv("materials_strength_density.tsv", type, function(error, data) {
  if (error) throw error;
  

  x.domain([d3.min(data, function(d) { return d[propX + " low"]; }),
            d3.max(data, function(d) { return d[propX + " high"]; })])
            .nice();

  y.domain([d3.min(data, function(d) { return d[propY + " low"]; }),
            d3.max(data, function(d) { return d[propY + " high"]; })])
            .nice();


  // Add Grids
  svg.append("g")
      .attr("class", "grid")
      .attr("transform", "translate(0," + height + ")")
      .call(xGrid);

  svg.append("g")
      .attr("class", "grid")
      .call(yGrid)
  
  // Add enclosing
  for (j in categories) {
    var cat = categories[j];
    var vertices = [];
    for (var k in data) {
      if (data[k].Category === cat){
        vertices.push([x(data[k][propX + " low"]), y(data[k][propY + " low"])]);
        vertices.push([x(data[k][propX + " low"]), y(data[k][propY + " high"])]);
        vertices.push([x(data[k][propX + " high"]), y(data[k][propY + " low"])]);
        vertices.push([x(data[k][propX + " high"]), y(data[k][propY + " high"])]);
      }
    }

    var convHull = d3.geom.hull(vertices);
    var centX = 0;
    var centY = 0;

    for (var k in convHull) {
      centX += convHull[k][0];
      centY += convHull[k][1];
    };
    centX = centX/convHull.length;
    centY = centY/convHull.length;

    svg.append("path")
        .attr("class", "hull")
        .datum(convHull)
        .attr("d", function(d) { return "M" + d.join("L") + "Z"; })
        .style("fill", color(cat))
        .style("stroke", color(cat))
        .attr("transform", "translate("+ centX + ", " + centY +")" +
              "scale (1.1 1.1)" + "translate("+ -centX + ", " + -centY +")");


  };
  
  // Add axes
  svg.append("g")
      .attr("class", "x axis")
      .attr("transform", "translate(0," + height + ")")
      .call(xAxis)
    .append("text")
      .attr("x", width)
      .attr("y", -6)
      .style("text-anchor", "end")
      .text(propX + unitX);

  svg.append("g")
      .attr("class", "y axis")
      .call(yAxis)
    .append("text")
      .attr("transform", "rotate(-90)")
      .attr("y", 6)
      .attr("dy", ".71em")
      .style("text-anchor", "end")
      .text(propY + unitY);


  // Add ellipses
  svg.selectAll(".ellip")
      .data(data)
    .enter().append("ellipse")
      .attr("class", "ellip")
      .attr("cx", function(d) { return 0.5*(x(d[propX + " low"]) + x(d[propX + " high"])); })
      .attr("cy", function(d) { return 0.5*(y(d[propY + " low"]) + y(d[propY + " high"])); })
      .attr("rx", function (d) {
          var rx = 0.5*(x(d[propX + " high"]) - x(d[propX + " low"]))
          if (rx < 3) { return 3;}
          else { return rx;}
      })
      .attr("ry", function (d) {
          var ry = 0.5*(y(d[propY + " low"]) - y(d[propY + " high"]));
          if (ry < 3) { return 3;}
          else { return ry;}
      })
      .style("stroke", function(d) { return color(cValue(d));});


  // Draw legend
  var legend = svg.selectAll(".legend")
      .data(color.domain())
    .enter().append("g")
      .attr("class", "legend")
      .attr("transform", function(d, i) { return "translate(0," + i * 20 + ")"; });

  // draw legend colored rectangles
  legend.append("rect")
      .attr("x", width - 18)
      .attr("width", 18)
      .attr("height", 18)
      .style("fill", color);

  // draw legend text
  legend.append("text")
      .attr("x", width - 24)
      .attr("y", 9)
      .attr("dy", ".35em")
      .style("text-anchor", "end")
      .text(function(d) { return d;})

});

  
function type(d) {
  d[propX + " low"] = +d[propX + " low"];
  d[propX + " high"] = +d[propX + " high"];
  d[propY + " low"] = +d[propY + " low"];
  d[propY + " high"] = +d[propY + " high"];

  return d;
}


</script>
</body>
</html>

The material properties are given in the following file materials_strength_density.tsv :

Material	Category	Density low	Density high	Strength low	Strength high
Flexible Foam VLD	Foams	16	35	0.01	0.12
Flexible Foam LD	Foams	38	70	0.02	0.3
Flexible Foam MD	Foams	75	115	0.05	0.7
Rigid Foam LD	Foams	36	70	0.3	1.7
Rigid Foam MD	Foams	78	165	0.4	3.5
Rigid Foam HD	Foams	170	470	0.8	12
Isoprene	Elastomers	930	940	20	25
Butyl rubber	Elastomers	900	920	2	3
EVA	Elastomers	945	955	12	18
Neoprene	Elastomers	1230	1250	3.4	24
Polyurethane	Elastomers	1020	1250	25	51
Silicone elastomers	Elastomers	1300	1800	2.4	5.5
Leather	Natural materials	810	1050	5	10
Wood (parallel)	Natural materials	600	800	30	70
Wood (perpendicular)	Natural materials	600	800	2	6
Bamboo	Natural materials	600	800	35	44
Cork	Natural materials	120	240	0.3	1.5
Polyester	Polymers	1040	1400	33	40
Epoxies	Polymers	1110	1400	36	71.7
PMMA	Polymers	1160	1220	53	72.4
PS	Polymers	1040	1050	28.7	56.2
PA	Polymers	1120	1140	50	94.8
PC	Polymers	1140	1210	59	70
PE	Polymers	939	960	17.9	29
PET	Polymers	1290	1400	56.5	62.3
PP	Polymers	890	910	20.7	37.2
PTFE	Polymers	2140	2200	15	25
PEEK	Polymers	1300	1320	65	95
Brick	Nontechnical ceramics	1900	2100	50	140
Stone	Nontechnical ceramics	2500	3000	34	248
Concrete	Nontechnical ceramics	2200	2600	32	60
Glass	Nontechnical ceramics	2170	2800	264	2129
GFRP	Composites	1750	1970	110	192
CFRP	Composites	1500	1600	550	1050
Aluminun/silicon carbide	Composites	2660	2900	280	324
Boron carbide	Technical ceramics	2350	2550	2583	5687
Silicon nitride	Technical ceramics	3000	3290	524	5500
Silicon carbide	Technical ceramics	3000	3210	1000	5250
Alumina	Technical ceramics	3500	3980	690	5500
Tungsten carbide	Technical ceramics	15300	15900	3347	6833
Lead alloys	Metals	10000	11400	8	14
Cu alloys	Metals	8930	8940	30	500
Steels	Metals	7600	8100	170	1155
Ni alloys	Metals	8830	8950	70	1100
Ti Alloys	Metals	4400	4800	250	1245
Al alloys	Metals	2500	2900	30	500
Mg alloys	Metals	1740	1950	70	400
Cast iron	Metals	7050	7250	215	790
Zn alloys	Metals	4950	7000	80	450

Licensing

I, the copyright holder of this work, hereby publish it under the following license:
w:en:Creative Commons
attribution
This file is licensed under the Creative Commons Attribution 4.0 International license.
You are free:
  • to share – to copy, distribute and transmit the work
  • to remix – to adapt the work
Under the following conditions:
  • attribution – You must give appropriate credit, provide a link to the license, and indicate if changes were made. You may do so in any reasonable manner, but not in any way that suggests the licensor endorses you or your use.

Captions

Ashby plot of strength versus density

Items portrayed in this file

depicts

2 September 2015

image/svg+xml

File history

Click on a date/time to view the file as it appeared at that time.

Date/TimeThumbnailDimensionsUserComment
current23:23, 2 September 2015Thumbnail for version as of 23:23, 2 September 2015900 × 560 (60 KB)NicoguaroUser created page with UploadWizard

The following page uses this file:

Global file usage

The following other wikis use this file:

Metadata