Create simple visualisation like a tube / subway map to show distances from a single point UPDATED: added larger dataset to give more detail. Example below is for one office location.
I want to create a simple visualisation to show how far a set of supplier locations are from certain offices. So the data would look something like:
company_name   office_location   distance   
'ABC Corp'     'London'          39
'ZX Spec Ltd'  'London'          3.5
'Global Biz'   'London'          106
'UKTC LLC'     'London'          2.3
'Venture Ltd.' 'London'          23
'Ace LLC'      'London'          1
'RedBiz Ltd.'  'London'          3
'Blueco Ltd.'  'London'          2.2
'Greencom'     'London'          43
'Noname Ltd.'  'London'          40
'Anonon LLC'   'London'          39 
'ABC Corp'     'Birmingham'      9
'ZX Spec Ltd.' 'Birmingham'      22
…

About 100 rows in total for seven office locations. Ideally I would have separate visualisations for each of these office location 'groups' (one each for London, Manchester etc.) At first I was going to put them on a map, but it seems like overkill. Ideally I would have a very simple line for each office location with labelled marks for each of the companies: rather like the London Tube or NYC Subway maps, except with the distances between the points scaled. The people receiving this won't be able to click, so anything interactive will be wasted on them. Direction isn't important, just distance, which is why I thought this sort of straight line viz might work well.
I am sure there must be a way to do this but I just cannot figure it out (save for manually creating them as drawings, but there must be a better way!)
Can you suggest anything? I have access to Excel, Tableau and R (among others). 
 A: Possible use of geom_label_repel():
library(ggplot2)
library(dplyr)

read.table(text="company_name   office_location   distance   
'ABC Corp'     'London'          39
'ZX Spec Ltd'  'London'          3.5
'Global Biz'   'London'          106
'UKTC LLC'     'London'          2.3
'Venture Ltd.' 'London'          23
'Ace LLC'      'London'          1
'RedBiz Ltd.'  'London'          3
'Blueco Ltd.'  'London'          2.2
'Greencom'     'London'          43
'Noname Ltd.'  'London'          40
'Anonon LLC'   'London'          39 
'ABC Corp'     'Birmingham'      9
'ZX Spec Ltd.' 'Birmingham'      22", 
           stringsAsFactors=FALSE, header=TRUE) -> places

group_by(places, office_location) %>% 
  summarise(max=max(distance)) -> max_l


gg <- ggplot()
gg <- gg + geom_segment(aes(x=1, xend=max, y=office_location, 
                            yend=office_location), max_l)
gg <- gg + geom_label_repel(aes(x=distance, y=office_location, label=company_name), 
                            places, fill="white", size=3)
gg <- gg + scale_x_continuous(expand=c(0,0), 
                              labels=c("0 (km)", seq(25, 100, 25)), 
                              limits=c(0, 110))
gg <- gg + labs(x=NULL, y=NULL)
gg <- gg + theme_minimal()
gg


A: I would use a dotplot for this.  I would first sort by distance (unless something else made more sense in the business context), and group the values by the office in question.  

The issue with scaling this up to 100 data, is that the company names become very small.  I alternately added some whitespace to the names to stagger them to keep them from overlapping.  I also shrunk the font, shrunk the outer margin, and made the plot bigger.  In my opinion, this will be imperfect unless you can present a big plot, or break the dataset up onto more than one plot.  

