private Color getCellColor(double value) {
		VisualMappingManager vizMap = Cytoscape.getVisualMappingManager();
		VisualStyle visualStyle = vizMap.getVisualStyle();
		NodeAppearanceCalculator nac = visualStyle.getNodeAppearanceCalculator();
		Vector<ObjectMapping> mappings = nac.getCalculator(VisualPropertyType.NODE_FILL_COLOR).getMappings();
		for (ObjectMapping om : mappings) {
			if (om instanceof ContinuousMapping) {
				ContinuousMapping m = (ContinuousMapping)om;
				int nPunti = m.getPointCount();
				int idx = 0;
				double minVal = Double.POSITIVE_INFINITY, maxVal = Double.NEGATIVE_INFINITY, range = 0;
				for (ContinuousMappingPoint p : m.getAllPoints()) {
					if (p.getValue() < minVal) {
						minVal = p.getValue();
					}
					if (p.getValue() > maxVal) {
						maxVal = p.getValue();
					}
				}
				range = maxVal - minVal;
				double pointValue = Double.NaN;
				for (;idx<nPunti;idx++) {
					ContinuousMappingPoint punto = m.getPoint(idx);
					if ((punto.getValue() - minVal) / range > value) {
						pointValue = value * range + minVal;
						break;
					}
				}
				int idx1 = idx - 1,
					idx2 = idx;
				if (idx == nPunti) {
					return (Color)m.getPoint(nPunti - 1).getRange().equalValue;
				}
				ContinuousMappingPoint p1 = m.getPoint(idx1),
									   p2 = m.getPoint(idx2);
				minVal = p1.getValue();
				maxVal = p2.getValue();
				range = maxVal - minVal;
				LinearNumberToColorInterpolator inter = new LinearNumberToColorInterpolator();
				return (Color)inter.getRangeValue((pointValue - minVal) / range, p1.getRange().equalValue, p2.getRange().equalValue);
			}
		}
		return new Color(0, 0, 0);
	}