Microsoft Fabric Community Conference 2025, March 31 - April 2, Las Vegas, Nevada. Use code FABINSIDER for a $400 discount.
Register nowGet inspired! Check out the entries from the Power BI DataViz World Championships preliminary rounds and give kudos to your favorites. View the vizzies.
I want to know if I can add text on a shape map in Power BI. I'm looking for how I can add information about regions in each of them, but I can't find a solution.
What I want to say is that, for example, in the region of Catalonia there are 4 million inhabitants. I want this information to appear on the map within the region of Catalonia. Can anyone help me?
Solved! Go to Solution.
I solved my problem:
It's not possible with shape maps. For solve this problem, it's necessary to use R or Python Script.
- Firtsly, you have to drag the variables what you're going to use onto the python visual. For example, "regions" and "num_inhabitants"
- Secondly, you need to read your geojson field and merging with default dataset (composed by dragged variables):
import geopandas as gpd
import matplotlib.pyplot as plt
# Reading geojson
mapa = gpd.read_file('map.geojson')
# Merging by the common column
mapa_pedidos_venta = mapa.merge(dataset, left_on='region_name', right_on=dataset.region_name)
Careful! It's essential that two columns that you're going to merge having exactly the same names. For example, "Catalonia" have to be on both map.geojson and the region field.
Then you can displaying the map and add labels with something like this:
# Plotting the map
mapa_pedidos_venta.plot()
#Adding labels
for idx, row in mapa_pedidos_venta.iterrows():
labels = '{:.2%}'.format(row['inhabitants'])
plt.annotate(text=etiqueta, xy=row['geometry'].centroid.coords[0], ha='center', fontsize=40)
# Displaying the map
plt.show()
"geometry" is the name of the column of geojson file that contains the coordinates.
I solved my problem:
It's not possible with shape maps. For solve this problem, it's necessary to use R or Python Script.
- Firtsly, you have to drag the variables what you're going to use onto the python visual. For example, "regions" and "num_inhabitants"
- Secondly, you need to read your geojson field and merging with default dataset (composed by dragged variables):
import geopandas as gpd
import matplotlib.pyplot as plt
# Reading geojson
mapa = gpd.read_file('map.geojson')
# Merging by the common column
mapa_pedidos_venta = mapa.merge(dataset, left_on='region_name', right_on=dataset.region_name)
Careful! It's essential that two columns that you're going to merge having exactly the same names. For example, "Catalonia" have to be on both map.geojson and the region field.
Then you can displaying the map and add labels with something like this:
# Plotting the map
mapa_pedidos_venta.plot()
#Adding labels
for idx, row in mapa_pedidos_venta.iterrows():
labels = '{:.2%}'.format(row['inhabitants'])
plt.annotate(text=etiqueta, xy=row['geometry'].centroid.coords[0], ha='center', fontsize=40)
# Displaying the map
plt.show()
"geometry" is the name of the column of geojson file that contains the coordinates.
Hi @powerbi2srm ,
According to your description, do you want to show the population of the country in the shape chart, right?
After enabling the preview feature of Shape Map, get the data from Regions Excel file, which includes data set as below;
To get the first view of this visual, you need to drag and drop a field into it. Start with using Region as the Location, and Use Population as Color Saturation.
Or you can also convert the details to a .json file to add to the PBIX file.
Please refer: Use Shape maps in Power BI Desktop (Preview) - Power BI | Microsoft Learn
Shape Map Better than the Filled Map - RADACAD
Best Regards,
Neeko Tang
If this post helps, then please consider Accept it as the solution to help the other members find it more quickly.
March 31 - April 2, 2025, in Las Vegas, Nevada. Use code MSCUST for a $150 discount!
Check out the February 2025 Power BI update to learn about new features.
User | Count |
---|---|
85 | |
78 | |
41 | |
40 | |
35 |