1

I did a plot with the bokeh library, the output seems OK except for a overlapping of the x categorical variables.

There is a simple way to separate each month so there is no overlap between each other ?

I tried with dodge() but I couldn't define the parameters inside the function

cumple.txt file:
{"people": 
[{"name": "daniela", "birthday": "8/05/1990"}, 
{"name": "mariano", "birthday": "5/08/1990"}, 
{"name": "agustin", "birthday": "27/11/1993"}, 
{"name": "laura", "birthday": "20/10/2000"}]}

Here is my code and the output:

from collections import Counter
import json
from bokeh.plotting import figure, show, output_file

with open("cumple.txt", "r") as f:
    info = json.load(f)#carga todo el dictionario en info

s=[]
for i in info['people']:
    s.append(i['birthday'])


months=[]

num_to_string = {
    1: "January",
    2: "February",
    3: "March", 
    4: "April",
    5: "May",
    6: "June",
    7: "July",
    8: "August",
    9: "September",
    10: "October",
    11: "November",
    12: "December"
}

month=0
for x in s:
    month=int(x.split('/')[1])[![enter image description here][1]][1]
    months.append(num_to_string[month])


output_file("figura.html")

x_categories = []

for u in num_to_string.values():
    x_categories.append(u)
print(x_categories)

x=[]
for j in months:
    x.append(j)
print (x)


y=[]

for r in Counter(months).values():
    y.append(r)
print(y)
p = figure(title='cumple de amigos',x_range=x_categories, x_axis_label='months', y_axis_label='amount of birthdays')
p.title.align = 'center'
p.vbar(x=x, top=y, width=0.5)

show(p)

print(Counter(months))
2
  • Can you post a sample of the cumple.txt file? Commented Feb 29, 2020 at 23:15
  • I did it thank you for notice it. Commented Feb 29, 2020 at 23:33

1 Answer 1

3

Two obvious ways to avoid the labels overlapping:

  1. Increase the width of the graph by setting plot_width:

    p = figure(title='cumple de amigos',x_range=x_categories, x_axis_label='months', y_axis_label='amount of birthdays', plot_width=1000)
    
  2. Rotate the X-axis labels (don't forget to import pi):

    p.xaxis.major_label_orientation = pi/4
    
Sign up to request clarification or add additional context in comments.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.