2

I want to change on the yticklabel decimal separator from a decimal point to a comma, but leave the format of the offset text (1e-14), after using code from this code or that code.

1

My questions:

  1. How can I change the point to a comma and save 1e-14?
  2. How can I change e to E in the offset text?

I am using Python 3.5

bad_coder
  • 11,289
  • 20
  • 44
  • 72
FunnyJingl
  • 43
  • 2
  • 4

1 Answers1

17

To change the decimal separator from a point to a comma, you can change the locale to somewhere where a comma is used. For example, here I set it to German:

#Locale settings
import locale
# Set to German locale to get comma decimal separater
locale.setlocale(locale.LC_NUMERIC, "de_DE")

import numpy as np
import matplotlib.pyplot as plt
plt.rcdefaults()

# Tell matplotlib to use the locale we set above
plt.rcParams['axes.formatter.use_locale'] = True

# make the figure and axes
fig,ax = plt.subplots(1)

# Some example data
x=np.arange(100)
y=4e-18*x**2

# plot the data
ax.plot(x,y,'b-')

plt.show()

enter image description here

Changing the exponent to E in the offset text does not seem to be a simple task. You might start by looking at the answers here.

Community
  • 1
  • 1
tmdavison
  • 64,360
  • 12
  • 187
  • 165
  • 3
    I needed to provide a locale in different format: `locale.setlocale(locale.LC_NUMERIC, ('pl_PL', 'UTF-8'))`. I wonder if in your response, shouldn't be `('de_DE', 'UTF-8')` **or** `'de_DE.UTF-8'` (maybe it is OS dependent?). – matandked Jul 01 '17 at 07:26
  • @matandked same for me. 'de_DE.UTF-8' works on Windows. – Marcel Jun 19 '19 at 15:26