Comment créer de l'espace autour des points que j'ai tracés avec matplotlib?
Par exemple, dans cette parcelle, le point de gauche est coupé par l'axe, mais je voudrais un peu plus d'espace entre le point et l'axe.
en mode interactif, le
p> xlim code> line renvoie (16.0, 16384) code>, les anciennes valeurs au lieu des nouvelles valeurs que j'essaie de définir. p> p>
3 Réponses :
zéro ne peut pas être tracé sur un graphique Loglog (journal (0) = -inf). Il manque silencieusement parce qu'il ne peut pas utiliser 0 comme une limite. p>
Essayez plt.xlim ([1,2 ** 14]) code> à la place. p>
L'échec silencieux n'a pas été utile, mais bien sûr que 0 ne peut pas être tracé! Bonne réponse.
Si vous recherchez un moyen général de gérer ce problème et que vous souhaitez régler automatiquement les limites de votre parcelle (même sans rien savoir de vos données), vous pouvez également écrire un extrait inspiré par Cette réponse à une question similaire. P>
Notez que vous devrez modifier un peu le code et le changer afin qu'il effectue également le travail pour l'axe Y. P>
ici, j'utilise plt.axis () code> pour définir les valeurs XMIN et XMAX (similaires à votre plt.xlim code> appel); Mais j'utilise une variable 'tampon' construite sur la plage et un intervalle. La plage de l'axe est dérivée de l'utilisation des valeurs min et max. Étant donné que la balance de journalisation ne complète pas 0 ou négatifs, je définis l'argument xmin code> égal à 1 à l'intérieur du .axis () code> appel de fonction. def plotcolumn_log_cond(some_row_entry, logaxis = 'x', interval = 10):
"""Selects data for some row entry
Creates a scatter plot from two column variables.
Arguments:
Set axis to be logged (x or y as string)
Pass interval value (as number)
"""
# numpy fancy selector for input argument
data = data[data.some_row_entry == some_row_entry]
# establish plot
data.plot.scatter(
'first_column',
'second_column',
logx=True)
# LOG XAXIS
if logaxis = 'x':
# establish plot
data.plot.scatter(
'first_column',
'second_column',
logx=True
)
# axis range controls
x_interval = interval
# x axis (ie x-axis variable)
x_buffer = (data.first_column.max() - data.first_column.min()) / x_interval
plt.axis(
xmin=1, # use for xaxis lower buffer if logx and close to 0
xmax=data.first_column.max()+x_buffer, # sets xaxis upper buffer
#xmin=data.first_column.min()-x_buffer, # sets xaxis lower buffer if not logx close to 0
)
# LOG YAXIS
if logaxis = 'y':
# establish plot
data.plot.scatter(
'first_column',
'second_column',
logy=True
)
# axis range controls
y_interval = interval
# x axis (ie x-axis variable)
y_buffer = (data.second_column.max() - data.second_column.min()) / y_interval
plt.axis(
ymin=1, # use for yaxis lower buffer if logy and close to 0
ymax=data.second_column.max()+y_buffer, # sets yaxis upper buffer
#ymin=data.second_column.min()-y_buffer, # sets yaxis lower buffer if not logy close to 0
)
# NOT X OR Y PASSED
if (logaxis != 'x') & (logaxis != 'y'):
# establish plot
data.plot.scatter(
'first_column',
'second_column')