10

I am using ggplot to plot a histogram where the x variable is a categorical variable and I want to change the x-axis tick labels. Here is my code:

from pandas import *
from ggplot import *

df = pandas.read_csv('C:\Users\...csv')

def plot_data(df):

    plot = ggplot(data_by_group, aes('x', 'y')) +
           geom_histogram(stat='bar') + ggtitle('title') + 
           xlab('x-label') + ylab('y-label')  
    #x_ticklabels = ['a', 'b', 'c']    
    return plot

I would like to use the x_ticklabels on the x-axis instead of the numbers from the categorical variable.

Any ideas on how to do this?

Thank you

2 Answers 2

4

There is a good example here (under "Setting tick mark labels") showing how to do this. Briefly, given a ggplot "bp", you can control the actual tick labels by setting labels for each category you have in your data like this:

bp + scale_x_discrete(breaks=c("ctrl", "trt1", "trt2"),
                  labels=c("Control", "Treat 1", "Treat 2"))

So in your case, I would imagine you would do something in the lines of

plot = ggplot(data_by_group, aes('x', 'y')) +
       geom_histogram(stat='bar') + ggtitle('title') + 
       xlab('x-label') + ylab('y-label') +
       scale_x_discrete(breaks=c(1, 2, 3),
                  labels=c("a", "b", "c"))
Sign up to request clarification or add additional context in comments.

2 Comments

The question is for Python ggplot, not R ggplot
You do realize this is a python ggplot question, not R. Your code does not work. Even if you use the standard python syntax (I.e., remove the c() vector notation into list notation) it still doesn't work, so the question stands.
1

Change the answer from MeloMCR as below to make it work:

    plot = ggplot(data_by_group, aes('x', 'y')) +
   geom_histogram(stat='bar') + ggtitle('title') + 
   xlab('x-label') + ylab('y-label') +
   scale_x_discrete(breaks=c(1, 2, 3),
              labels=c("a", "b", "c"))

to

    plot = ggplot(data_by_group, aes('x', 'y')) +
   geom_histogram(stat='bar') + ggtitle('title') + 
   xlab('x-label') + ylab('y-label') +
   scale_x_discrete(breaks= [1, 2, 3],
              labels= ["a", "b", "c"])

column specification (c(a1,a2,a3,....) is not identified by python.

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.