CÓMO

crear una leyenda de gráfico circular emergente que muestre los valores superiores para ArcGIS Pro

Last Published: May 29, 2025

Descripción

En ArcGIS Pro, las expresiones de Arcade se pueden utilizar para mostrar los valores de campo superiores en una leyenda de gráfico circular emergente. En este artículo se proporciona un ejemplo e instrucciones sobre el uso de expresiones de Arcade para crear la leyenda del gráfico circular emergente que muestra los tres idiomas principales que se hablan en casa en Caledon, Ontario, Canadá.

Solución o solución alternativa

  1. Inicie ArcGIS Pro y abra el proyecto.
  2. En el panel Contenido, haga clic con el botón derecho en la clase de entidad y haga clic en Configurar elementos emergentes para abrir el panel Configurar elementos emergentes de la clase de entidad.
Abrir la herramienta Configurar elementos emergentes de la clase de entidad desde el panel Contenido
  1. En el panel Configurar elementos emergentes, haga clic en Expresiones para agregar un campo utilizando una expresión de Arcade para utilizarla en el elemento emergente.
  2. En el panel Expresiones, haga clic en Nuevo.
  3. En el cuadro de diálogo Constructor de expresiones, configure los siguientes parámetros para la expresión de Arcade.
    1. En Nombre, cambie el nombre de la nueva expresión.
    2. En Título, especifique un título para la nueva expresión.
  4. En la sección Expresión, inserte la siguiente expresión de Arcade.
    1. Para definir el parámetro de matriz en el que se almacenan los valores de campo numérico en competencia y el texto de la propiedad de alias de campo, especifique lo siguiente:
var <variableName1> = [
      {value: $feature.<fieldName1>, alias: " <fieldAlias1>"},
      {value: $feature.<fieldName2>, alias: " <fieldAlias2>"},
      ...
      {value: $feature.<fieldName214>, alias: " <fieldAlias214>"}
];
  1. Especifique la siguiente instrucción para volver a indexar la matriz por valores de matriz.
function getValuesArray(a){
  var valuesArray = []
  for(var i in a){
    valuesArray[i] = a[i].value;
  }
  return valuesArray;
}
  1. Especifique la siguiente instrucción para buscar y compilar los alias de campo relacionados con la matriz de campos.
function findAliases(topA,fullA){
  var aliases = [];
  var found = "";
  for(var i in topA){
    for(var k in fullA){
      if(topA[i] == fullA[k].value && topA[i] > 0 && Find(fullA[k].alias, found) == -1){
        found += fullA[k].alias;
        aliases[Count(aliases)] = {
          alias: fullA[k].alias,
          value: topA[i]
        };
      }
    }
  }
  return aliases;
}
  1. Especifique la siguiente instrucción para ordenar la matriz del valor de campo más alto al más bajo y devuelva los alias de campo y los valores de campo.
    • En <numberOfTopValuesToDisplay>, escriba el número deseado de valores superiores que se mostrarán. En este ejemplo, el número es 3.
    • En <textToDisplayWhenThereIsNoValue>, escriba el texto que se mostrará si el valor del campo está en blanco. En este ejemplo, el texto que se va a mostrar es "Aquí no vive nadie".
function getTopGroups(groupsArray){
    
  var values = getValuesArray(groupsArray);
  var topValues = IIF(Max(values) > 0, Top(Reverse(Sort(values)),<numberOfTopValuesToDisplay>), "<textToDisplayWhenThereIsNoValue>");
  var topAliases = findAliases(topValues,groupsArray);
    
  if(TypeOf(topValues) == "String"){
    return topValues;
  } else {
    var content = "";
    for(var i in topAliases){
      content += (i+1) + "." + topAliases[i].alias + " - " + Text(topAliases[i].value, "#,###");
      content += IIF(i < Count(topAliases)-1, "<br/>", "");
    }
  }
    
  return content;
}
 
getTopGroups(<variableName1>);
Note:
The legend numbering does not directly represent the ranking when there are more than two similar reference values. For example, the third most spoken languages in the Caledon area are Italian and Tamil, which are spoken in 45 households each.

El siguiente bloque de código muestra la expresión de trabajo completa para los tres idiomas principales que se hablan en el hogar en Caledon, Ontario, Canadá.

var groups = [
      {value: $feature.MO_Arabic, alias: " Arabic"},
      {value: $feature.MO_Armenian, alias: " Armenian"},
      {value: $feature.MO_Belarusian, alias: " Belarusian"},
      {value: $feature.MO_Bengali, alias: " Bengali"},
      {value: $feature.MO_Bulgarian, alias: " Bulgarian"},
      {value: $feature.MO_Burmese, alias: " Burmese"},
      {value: $feature.MO_Catalan, alias: " Catalan"},
      {value: $feature.MO_Croatian, alias: " Croatian"},
      {value: $feature.MO_Czech, alias: " Czech"},
      {value: $feature.MO_Danish, alias: " Danish"},
      {value: $feature.MO_Dutch, alias: " Dutch"},
      {value: $feature.MO_English, alias: " English"},
      {value: $feature.MO_Finnish, alias: " Finnish"},
      {value: $feature.MO_French, alias: " French"},
      {value: $feature.MO_German, alias: " German"},
      {value: $feature.MO_Greek, alias: " Greek"},
      {value: $feature.MO_Gujarati, alias: " Gujarati"},
      {value: $feature.MO_Hakka, alias: " Hakka"},
      {value: $feature.MO_Hebrew, alias: " Hebrew"},
      {value: $feature.MO_Hindi, alias: " Hindi"},
      {value: $feature.MO_Hungarian, alias: " Hungarian"},
      {value: $feature.MO_Indonesian, alias: " Indonesian"},
      {value: $feature.MO_Iranian_Persian, alias: " IranianPersian"},
      {value: $feature.MO_Irish, alias: " Irish"},
      {value: $feature.MO_Italian, alias: " Italian"},
      {value: $feature.MO_Japanese, alias: " Japanese"},
      {value: $feature.MO_Korean, alias: " Korean"},
      {value: $feature.MO_Latvian, alias: " Latvian"},
      {value: $feature.MO_Macedonian, alias: " Macedonian"},
      {value: $feature.MO_Malay, alias: " Malay"},
      {value: $feature.MO_Mandarin, alias: " Mandarin"},
      {value: $feature.MO_Mongolian, alias: " Mongolian"},
      {value: $feature.MO_Nepali, alias: " Nepali"},
      {value: $feature.MO_Norwegian, alias: " Norwegian"},
      {value: $feature.MO_Polish, alias: " Polish"},
      {value: $feature.MO_Punjabi_Panjabi, alias: " Punjabi(Panjabi)"},
      {value: $feature.MO_Romanian, alias: " Romanian"},
      {value: $feature.MO_Russian, alias: " Russian"},
      {value: $feature.MO_Serbian, alias: " Serbian"},
      {value: $feature.MO_Sindhi, alias: " Sindhi"},
      {value: $feature.MO_Spanish, alias: " Spanish"},
      {value: $feature.MO_Swahili, alias: " Swahili"},
      {value: $feature.MO_Tamil, alias: " Tamil"},
      {value: $feature.MO_Thai, alias: " Thai"},
      {value: $feature.MO_Tibetan, alias: " Tibetan"},
      {value: $feature.MO_Turkish, alias: " Turkish"},
      {value: $feature.MO_Ukrainian, alias: " Ukrainian"},
      {value: $feature.MO_Uzbek, alias: " Uzbek"},
      {value: $feature.MO_Vietnamese, alias: " Vietnamese"},
      {value: $feature.MO_Welsh, alias: " Welsh"},
      {value: $feature.MO_Wu_Shanghainese, alias: " Wu(Shanghainese)"},
      {value: $feature.MO_Yue_Cantonese, alias: " Yue(Cantonese)"}
];

function getValuesArray(a){
  var valuesArray = []
  for(var i in a){
    valuesArray[i] = a[i].value;
  }
  return valuesArray;
}

function findAliases(topA,fullA){
  var aliases = [];
  var found = "";
  for(var i in topA){
    for(var k in fullA){
      if(topA[i] == fullA[k].value && topA[i] > 0 && Find(fullA[k].alias, found) == -1){
        found += fullA[k].alias;
        aliases[Count(aliases)] = {
          alias: fullA[k].alias,
          value: topA[i]
        };
      }
    }
  }
  return aliases;
}
 
function getTopGroups(groupsArray){
    
  var values = getValuesArray(groupsArray);
  var topValues = IIF(Max(values) > 0, Top(Reverse(Sort(values)),3), "Nobody lives here");
  var topAliases = findAliases(topValues,groupsArray);
    
  if(TypeOf(topValues) == "String"){
    return topValues;
  } else {
    var content = "";
    for(var i in topAliases){
      content += (i+1) + "." + topAliases[i].alias + " - " + Text(topAliases[i].value, "#,###");
      content += IIF(i < Count(topAliases)-1, "<br/>", "");
    }
  }
    
  return content;
}
 
getTopGroups(groups);
  1. Haga clic en Verificar para ejecutar una prueba de la expresión. Si la expresión es válida, haga clic en Aceptar.
El cuadro de diálogo Constructor de expresiones con un ejemplo de la expresión de Arcade
  1. En el panel Expresiones, haga clic en Atrás Icono Atrás.
Panel Expresiones
  1. Haga clic en Texto para agregar el elemento emergente de texto y en Editar elemento emergente Editar elemento emergente en el elemento Texto.
Panel Configurar elementos emergentes
  1. En el panel Opciones de texto, especifique un título para la leyenda y la expresión recién creada. En este ejemplo, la expresión recién creada es {expression/expression3}. Haga clic en Atrás Icono Atrás para aplicar la configuración del elemento emergente de texto.
Panel Opciones de texto

La siguiente imagen muestra la leyenda del gráfico circular emergente recién configurada con los tres idiomas más hablados en Caledon, Ontario, Canadá.

Leyenda del gráfico circular emergente recién configurada en ArcGIS Pro

Id. de artículo: 000031637

Recibir notificaciones y encontrar soluciones a problemas nuevos o comunes

Obtenga respuestas resumidas y soluciones de vídeo de nuestro nuevo chatbot de IA.

Descargar la aplicación de soporte de Esri

Información relacionada

Descubrir más sobre este tema

Obtener ayuda de expertos en ArcGIS

Contactar con el soporte técnico

Descargar la aplicación de soporte de Esri

Ir a opciones de descarga