Italian Partisans

Data on Italian resistance against fascism.
counter-mobilisation
social movements
Author
Published

Wednesday, 13 November 2024

Travelling in Italy a couple of times in the last few months, my eye was drawn to a few commemorations of anti-fascist partisans.

In Gargnano, on the Lago di Garda, there is a monument to Mario Boldini.

Memorial to Mario Boldini in Gargnano.

In Firenze, there is a garden named in honour of Silvano Sarti. In fact, the Biblioteca delle Oblate has a small exhibition about the resistance in Firenze: https://memoriediresistenza.comune.fi.it/blog.

Garden named in honour of Silvano Sarti in Firenze

After chancing upon a sign from the ‘ANPI’, the ‘National Association of Italian Partisans’ (Associazione Nazionale Partigiani d’Italia), I saw that it maintains a list of resistance fighters.1 As the ANPI acknowledges, this list represents only a ‘drop in the ocean’ (una autentica goccia nel mare): it estimates (easily) upwards of 100,000 men and women were directly involved in the resistance against fascism, so the 3229 names in their current database is only a fraction. (Boldini and Sarti actually are not yet included.) With luck, further historical memory work can add to this catalogue. Nevertheless, even this sample can reveal interesting things about loci of resistance to fascist forces.

I used R to scrape the data from ANPI’s website, wrangle it, and visualise it. The biographical accounts in ANPI’s catalogue offers more variables, so I will probably update this page. For now, the data on where they were born and (typically, if sometimes only initially) active is revealing.

The density map in Figure 1 shows that the (apparent) centre of anti-fascist resistance was in the northwest.

fullANPI_trim <- fullANPI %>% drop_na(long)
fullANPI_trim <- fullANPI_trim %>% subset(COB=="Italy")

fullANPI_trim <- as.data.frame(fullANPI_trim)

fullANPI_trim$Latitude  <- fullANPI_trim$lat
fullANPI_trim$Longitude <- fullANPI_trim$long

fullANPI_trim$latJIT <- jitter(fullANPI_trim$lat, factor = 100)
fullANPI_trim$longJIT <- jitter(fullANPI_trim$long, factor = 100)

fullANPI_trim_sf <- fullANPI_trim %>% 
  st_as_sf(
    coords = c("long", "lat"),
    crs = st_crs("EPSG:6875") # CRS 
  )

it = ne_countries(scale = 50, returnclass = "sf") |>
  filter(admin == "Italy") 

mapData <- ne_countries(scale = 10, continent = c("Europe"), returnclass = "sf")
it_states <- ne_states(country = "italy", returnclass = "sf")
it_states <- dplyr::select(it_states, name, geometry)

IT = ne_states(country = "italy", returnclass = "sf")
IT <- IT %>% dplyr::select(province = name, region, geometry)

st_crs(fullANPI_trim_sf) <- st_crs(it)

pp = st_geometry(fullANPI_trim_sf)
window = st_geometry(it)

crs = st_crs("EPSG:6875") # CRS 
pp = st_transform(pp, crs)[!st_is_empty(pp)]
window = st_transform(window, crs)
wt = as.ppp(c(window, pp))

# Smooth points
density_spatstat <- density(wt, dimyx = 500)
# Convert density_spatstat into a stars object.
density_stars <- stars::st_as_stars(density_spatstat)
# Convert density_stars into an sf object
density_sf <- st_as_sf(density_stars) %>% st_set_crs(32632)

map_density <- ggplot() +
  geom_sf(data = density_sf, aes(fill = v), col = NA) + 
  scale_fill_viridis_c(option = "magma") +
  # scale_fill_gradientn(colours = c("grey80", "grey10")) +
  # geom_sf(data = st_boundary(it_states)) + 
  theme_void() + 
  theme(legend.position="none")
map_density

Figure 1: Density map of resistance activists in ANPI by place of birth.

Figure 2 shows the highest number of resistance activists came from the northern regions of Piedmont, Emilia-Romagna, and Lombardy.

fullANPI_long_IT <- fullANPI_long %>% subset(Country=="Italy")

df.grouped <- fullANPI_long_IT %>% 
  group_by(Place) %>% 
  summarise(COUNT=n())

df.grouped$TOT <- sum(df.grouped$COUNT)
df.grouped$PROP <- df.grouped$COUNT / df.grouped$TOT
df.grouped$PERCENT <- df.grouped$PROP*100

IT = ne_states(country = "italy", returnclass = "sf")

IT <- IT %>% dplyr::select(province = name, region, geometry)

IT_REGION <- IT %>% group_by(region) %>% summarise(n = n())

mappedANPI_it <- IT_REGION %>%
  left_join(df.grouped, # df.sf
            by = c("region" = "Place"))

mappedANPI_it[is.na(mappedANPI_it)] <- 0

italy_ANPI_region <- ggplot(mappedANPI_it) +
  geom_sf(aes(fill = COUNT))+
  geom_sf_text(aes(label=COUNT), colour="red")+
  # geom_sf_text(aes(label = scales::percent(PROP)))+
  scale_fill_gradient("Number of resistance activists", low = "white", high = "gray20")+
  theme_void()+ # theme(legend.position = "none")+
  labs(title="")+theme(plot.title = element_text(hjust = 0.5))
italy_ANPI_region

Figure 2: Map of resistance activists in ANPI by region of birth.

Zooming in, Figure 3 shows particularly dense clusters in the provinces of Torino, Milano, Bologna, and Roma. Unsurprisingly, the largest numbers come from the largest population centres. Today, these areas continue to be represent a more leftist political orientation—even compared to other Italian cities. Along with Firenze, they were the provinces won by the Left coalition in the 2022 Italian election.

fullANPI_pob <- fullANPI %>% subset(COB=="Italy")

df.grouped <- fullANPI_pob %>% 
  group_by(ProvinceOfBirth) %>% 
  summarise(COUNT=n())

df.grouped$TOT <- sum(df.grouped$COUNT)
df.grouped$PROP <- df.grouped$COUNT / df.grouped$TOT
df.grouped$PERCENT <- df.grouped$PROP*100

IT = ne_states(country = "italy", returnclass = "sf")

IT <- IT %>% dplyr::select(province = name, region, geometry)

mappedANPI_it <- IT %>%
  left_join(df.grouped, # df.sf
            by = c("province" = "ProvinceOfBirth"))

mappedANPI_it[is.na(mappedANPI_it)] <- 0

italy_ANPI_region <- ggplot(mappedANPI_it) +
  geom_sf(aes(fill = COUNT))+
  geom_sf_text(aes(label=COUNT), colour="red", size=3)+
  # geom_sf_text(aes(label = scales::percent(PROP)))+
  scale_fill_gradient("Number of resisters", low = "white", high = "gray20")+
  theme_void()+ # theme(legend.position = "none")+
  labs(title="")+theme(plot.title = element_text(hjust = 0.5))
italy_ANPI_region

Figure 3: Map of resistance activists in ANPI by province of birth.

Sebastian Van Baalen has a nice map visualisation in his recent APSR article, which adapted slightly shows again the clusters of resistance activists from different birthplaces, in Figure 4.

Figure 4: Plot of resistance activists in ANPI by province of birth, similar to the map in Van Baalen (2024).

Sebastian Hellmeier has a nice map visualisation in his 2022 article, so for just a bit of mapping fun, we can make a similar map with the ANPI data in Figure 5.

Figure 5: Plot of resistance activists in ANPI by province of birth, similar to the map in Hellmeier (2022).

As mentioned above, I plan to continue working on this data, as time allows. In the meantime, the messy interactive map in Figure 6. plots the birthplaces of the ANPI-listed resistance activists (slightly jittered in a seemingly futile attempt to increase visibility).

fullANPI_trim <- fullANPI %>% drop_na(long)
fullANPI_trim <- as.data.frame(fullANPI_trim)

fullANPI_trim$latJIT <- jitter(fullANPI_trim$lat, factor = 50)
fullANPI_trim$longJIT <- jitter(fullANPI_trim$long, factor = 50)

fullANPI_trim_sf_JIT <- fullANPI_trim %>% 
  st_as_sf(
    coords = c("longJIT", "latJIT"),
    crs = st_crs("EPSG:6875") # CRS 
  )

st_crs(fullANPI_trim_sf_JIT) <- st_crs(it)


mapview(fullANPI_trim_sf_JIT, col.regions = "maroon", label = "Name",
        legend = T, layer.name = 'ANPI resistance activists',
        map.types = c("CartoDB.Positron","CartoDB.DarkMatter"),
        popup = popupTable(fullANPI_trim_sf_JIT,
                           zcol = c("units","Birthplace","COB","Summary")))