100% found this document useful (2 votes)
31 views

Full Download Data Visualization with Python and JavaScript 2nd Edition Kyran Dale PDF DOCX

Dale

Uploaded by

makseyda
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
100% found this document useful (2 votes)
31 views

Full Download Data Visualization with Python and JavaScript 2nd Edition Kyran Dale PDF DOCX

Dale

Uploaded by

makseyda
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 65

Download Full Version ebook - Visit ebookmeta.

com

Data Visualization with Python and JavaScript 2nd


Edition Kyran Dale

https://ebookmeta.com/product/data-visualization-with-
python-and-javascript-2nd-edition-kyran-dale/

OR CLICK HERE

DOWLOAD NOW

Discover More Ebook - Explore Now at ebookmeta.com


Instant digital products (PDF, ePub, MOBI) ready for you
Download now and discover formats that fit your needs...

Start reading on any device today!

Data Visualization with Python and JavaScript, 2nd Edition


Kyran Dale

https://ebookmeta.com/product/data-visualization-with-python-and-
javascript-2nd-edition-kyran-dale-2/

ebookmeta.com

Data Visualization with Python and JavaScript, 2nd Edition


(Third Early Release) Kyran Dale

https://ebookmeta.com/product/data-visualization-with-python-and-
javascript-2nd-edition-third-early-release-kyran-dale/

ebookmeta.com

Data Visualization with Python and JavaScript, 2nd Edition


(Seventh Early Release) Kyran Dale

https://ebookmeta.com/product/data-visualization-with-python-and-
javascript-2nd-edition-seventh-early-release-kyran-dale/

ebookmeta.com

Theoretical Models and Processes of Literacy Seventh


Edition Donna E. Alvermann

https://ebookmeta.com/product/theoretical-models-and-processes-of-
literacy-seventh-edition-donna-e-alvermann/

ebookmeta.com
Practical Petroleum Geochemistry for Exploration and
Production 2nd Edition Harry Dembicki

https://ebookmeta.com/product/practical-petroleum-geochemistry-for-
exploration-and-production-2nd-edition-harry-dembicki/

ebookmeta.com

Recurrent Spontaneous Miscarriages 3rd Edition Pankaj


Desai

https://ebookmeta.com/product/recurrent-spontaneous-miscarriages-3rd-
edition-pankaj-desai/

ebookmeta.com

Property Investing Essentials For Dummies Australian


Edition Nicola Mcdougall

https://ebookmeta.com/product/property-investing-essentials-for-
dummies-australian-edition-nicola-mcdougall/

ebookmeta.com

Bruce Lee Artist of Life Inspiration and Insights from the


World s Greatest Martial Artist Bruce Lee John Little

https://ebookmeta.com/product/bruce-lee-artist-of-life-inspiration-
and-insights-from-the-world-s-greatest-martial-artist-bruce-lee-john-
little/
ebookmeta.com

Indirect Judicial Review in Administrative Law Legality vs


Legal Certainty in Europe 1st Edition Mariolina Eliantonio

https://ebookmeta.com/product/indirect-judicial-review-in-
administrative-law-legality-vs-legal-certainty-in-europe-1st-edition-
mariolina-eliantonio/
ebookmeta.com
iPhone For Dummies Updated for iPhone 12 models and iOS 14
14th Edition Edward C. Baig

https://ebookmeta.com/product/iphone-for-dummies-updated-for-
iphone-12-models-and-ios-14-14th-edition-edward-c-baig/

ebookmeta.com
Data Visualization with Python
and JavaScript
Scrape, Clean, Explore, and Transform Your Data

SECOND EDITION

With Early Release ebooks, you get books in their earliest form—
the author’s raw and unedited content as they write—so you can
take advantage of these technologies long before the official
release of these titles.

Kyran Dale
Data Visualization with Python and JavaScript
by Kyran Dale
Copyright © 2023 Kyran Dale Limited. All rights reserved.
Published by O’Reilly Media, Inc., 1005 Gravenstein Highway North,
Sebastopol, CA 95472.
O’Reilly books may be purchased for educational, business, or sales
promotional use. Online editions are also available for most titles
(http://oreilly.com). For more information, contact our
corporate/institutional sales department: 800-998-9938 or
[email protected].

Acquisitions Editor: Michelle Smith

Development Editor: Shira Evans

Production Editor: Greg Hyman

Interior Designer: David Futato

Cover Designer: Karen Montgomery

Illustrator: Kate Dullea

July 2016: First Edition


December 2022: Second Edition

Revision History for the Early Release


2021-09-29: First Release
2021-12-02: Second Release
2022-01-26: Third Release
2022-02-25: Fourth Release
2022-03-25: Fifth Release
2022-05-06: Sixth Release
2022-07-07: Seventh Release
2022-09-02: Eighth Release

See http://oreilly.com/catalog/errata.csp?isbn=9781098111878 for


release details.
The O’Reilly logo is a registered trademark of O’Reilly Media, Inc.
Data Visualization with Python and JavaScript, the cover image, and
related trade dress are trademarks of O’Reilly Media, Inc.
While the publisher and the author have used good faith efforts to
ensure that the information and instructions contained in this work
are accurate, the publisher and the author disclaim all responsibility
for errors or omissions, including without limitation responsibility for
damages resulting from the use of or reliance on this work. Use of
the information and instructions contained in this work is at your own
risk. If any code samples or other technology this work contains or
describes is subject to open source licenses or the intellectual
property rights of others, it is your responsibility to ensure that your
use thereof complies with such licenses and/or rights.
978-1-098-11180-9
Chapter 1. A Language-Learning
Bridge Between Python and
JavaScript

A NOTE FOR EARLY RELEASE READERS


With Early Release ebooks, you get books in their earliest form—
the author’s raw and unedited content as they write—so you can
take advantage of these technologies long before the official
release of these titles.
This will be the second chapter of the final book.
If you have comments about how we might improve the content
and/or examples in this book, or if you notice missing material
within this chapter, please reach out to the editor at
[email protected].

Probably the most ambitious aspect of this book is that it deals with
two programming languages. Moreover, it only requires that you are
competent in one of these languages. This is only possible because
Python and JavaScript (JS) are fairly simple languages with much in
common. The aim of this chapter is to draw out those commonalities
and use them to make a learning bridge between the two languages
such that core skills acquired in one can easily be applied to the
other.
After showing the key similarities and differences between the two
languages, I’ll show how to set up a learning environment for Python
and JS. The bulk of the chapter will then deal with core syntactical
and conceptual differences, followed by a selection of patterns and
idioms that I use often while doing data visualization work.

Similarities and Differences


Syntax differences aside, Python and JavaScript actually have a lot in
common. After a short while, switching between them can be almost
seamless.1 Let’s compare the two from a data visualizer’s
perspective:
These are the chief similarities:

They both work without needing a compilation step


(i.e., they are interpreted).
You can use both with an interactive interpreter, which
means you can type in lines of code and see the results
right away.
Both have garbage collection.
Neither language has header files, package boilerplate,
and so on.
Both are primarily developed with a text editor—not an
IDE.
In both, functions are first-class citizens, which can be
passed as arguments.

These are the key differences:

Possibly the biggest difference is that JavaScript is


single-threaded and non-blocking, using asynchronous
I/O. This means that simple things like file access
involve the use of a callback function.
JS is used essentially in web development and until
relatively recently was browser-bound,2 but Python is
used almost everywhere.
JS is the only first-class language in web browsers,
Python being excluded.
Python has a comprehensive standard library, whereas
JS has a limited set of utility objects (e.g., JSON, Math).
Python has fairly classical object-oriented classes,
whereas JS uses prototypes.
JS lacks heavyweight general-purpose data-processing
libs.3

The differences here emphasize the need for this book to be bi-
lingual. JavaScript’s monopoly of browser dataviz needs the
complement of a conventional data-processing stack. And Python has
the best there is.

Interacting with the Code


One of the great advantages of Python and JavaScript is that because
they are interpreted on the fly, you can interact with them. Python’s
interpreter can be run from the command line, whereas JavaScript’s
is generally accessed from the web browser through a console,
usually available from the built-in development tools. In this section,
we’ll see how to fire up a session with the interpreter and start trying
out your code.

Python
By far, the best command-line Python interpreter is IPython, which
comes in three shades: the basic terminal version, an enhanced
graphical version, and a browser-based notebook. Since version 4.0
the latter two have been spun out into project Jupyter. The Jupyter
notebook is a rather brilliant and fairly recent innovation, providing a
browser-based interactive computational environment. There are pros
and cons to the different versions. The command line is fastest to
scratch a problematic itch but lacks some bells and whistles,
particularly embedded plotting courtesy of Matplotlib and friends. The
makes it suboptimal for Pandas-based data-processing and data
visualization work. Of the other two, both are better for multiline
coding (e.g., trying out functions) than the basic interpreter, but I
find the graphical Qt console more intuitive, having a familiar
command line rather than executable cells.4 The great boon of the
Notebook is session persistence and the possibility of web access.5
The ease with which one can share programming sessions, complete
with embedded data visualizations, makes the notebook a fantastic
teaching tool as well as a great way to recover programming context.
That’s why the Python chapters of this book have accompanying
Jupyter notebooks.
You can start an ipython session at the command-line like this:

$ ipython

To start a Jupyter notebook just run jupyter at the command-line.

$ jupyter notebook
[I 15:27:44.553 NotebookApp] Serving notebooks from local

directory:
...
[I 15:27:44.553 NotebookApp] http://localhost:8888/?token=5e09...

Then open a browser tab at the URL specified


(+http://localhost:8888 in the case) and start reading or writing
Python notebooks.

JavaScript
There are lots of options for trying out JavaScript code without
starting a server, though the latter isn’t that difficult. Because the
JavaScript interpreter comes embedded in all modern web browsers,
there are a number of sites that let you try out bits of JavaScript
along with HTML and CSS and see the results. Codepen is a good
option. These sites are great for sharing code and trying out
snippets, and usually allow you to add libraries such as D3.js with a
few mouse-clicks.
If you want to try out code one-liners or quiz the state of live code,
browser-based consoles are your best bet. With Chrome, you can
access the console with the key combo Ctrl-Shift-J. As well as trying
little JS snippets, the console allows you to drill down into any objects
in scope, revealing their methods and properties. This is a great way
to quiz the state of a live object and search for bugs.
One disadvantage of using online JavaScript editors is losing the
power of your favorite editing environment, with linting, familiar
keyboard shortcuts, and the like (see Chapter 3). Online editors tend
to be rudimentary, to say the least. If you anticipate an extensive
JavaScript session and want to use your favorite editor, the best bet
is to run a local server.
First, create a project directory—called sandpit, for example—and add
a minimal HTML file that includes a JS script:

sandpit
├── index.xhtml
└── script.js

The index.xhtml file need only be a few lines long, with an optional
div placeholder on which to start building your visualization or just
trying out a little DOM manipulation.

<!-- index.xhtml -->


<!DOCTYPE html>
<meta charset="utf-8">

<div id='viz'></div>

<script type="text/javascript" src="script.js" async></script>

You can then add a little JavaScript to your script.js file:

// script.js

var data = [3, 7, 2, 9, 1, 11];


var sum = 0;
data.forEach(function(d){

sum += d;
});

console.log('Sum = ' + sum);


// outputs 'Sum = 33'

Start your development server in the project directory using Python’s


http module:

$ python -m http.server 8000


Serving HTTP on 0.0.0.0 port 8000 ...

Then open your browser at http://localhost:8000, press Ctrl-Shift-J


(Cmd-Opt-J on OS X) to access the console and you should see
Figure 1-1, showing the logged output of the script (see Chapter 3
for further details).
Figure 1-1. Outputting to the Chrome console

Now that we’ve established how to run the demo code, let’s start
building a bridge between Python and JavaScript. First, we’ll cover
the basic differences in syntax. As you’ll see, they’re fairly minor and
easily absorbed.

Basic Bridge Work


In this section, I’ll contrast the basic nuts and bolts of programming
in the two languages.

Style Guidelines, PEP 8, and use strict


Where JavaScript style guidelines are a bit of a free-for-all (with
people often defaulting to those used by a big library like React),
Python has a Python Enhancement Proposal (PEP) dedicated to it. I’d
recommend getting acquainted with PEP-8 but not submitting totally
to its leadership. It’s right about most things, but there’s room for
some personal choice here. There’s a handy online checker here,
which will pick up any infractions of PEP-8.
In Python, you should use four spaces to indent a code block.
JavaScript is less strict, but two spaces is the most common indent.
One recent addition to JavaScript (Ecmascript 5) is the 'use strict'
directive, which imposes strict mode. This mode enforces some good
JavaScript practice, which includes catching accidental global
declarations, and I thoroughly recommend its use. To use it, just
place the string at the top of your function or module:
(function(foo){

'use strict';
// ...
}(window.foo = window.foo || {});

CamelCase Versus Underscore


JS conventionally uses CamelCase (e.g., processStudentData) for its
variables, whereas Python, in accordance with PEP-8, uses
underscores (e.g., process_student_data) in its variable names (see
Section B in Examples 1-3 and 1-4). By convention (and convention is
more important in the Python ecosystem than JS), Python uses
capitalized CamelCase for class declarations (see the following
example), uppercase for constants, and underscores for everything
else:

FOO_CONST = 10
class FooBar(object): # ...
def foo_bar():

baz_bar = 'some string'

Importing Modules, Including Scripts


Using other libraries in your code, either your own or third-party, is
fundamental to modern programming, which makes it all the more
surprising that until relatively recently JavaScript didn’t have a
dedicated way of doing it.6 Python has a simple import system that,
on the whole, works pretty well.
The good news on the JavaScript front is that since Ecmascript 6,
JavaScript has addressed this issue, with the addition of import and
export statements for encapsulated modules. Ecmascript 6 will be
getting browser support soon but as of late 2021, for cross-browser
support you need a converter to Ecmascript 5, such as Babel.js.
Meanwhile, although there have been many attempts to create a
reasonable client-side modular system, none have really achieved
critical mass and all are a little awkward to use. For now, I
recommend using the well-established HTML <script> tag to include
scripts. So to include the D3 visualization library, you would add this
tag to your main HTML file, conventionally index.xhtml:

<!DOCTYPE html>
<meta charset="utf-8">

...
<script src="http://d3js.org/d3.v7.min.js"></script>

You can include the script anywhere in your HTML file, but it’s best
practice to add scripts after the body (div tags, etc.) section.7 Note
that the order of the <script> tags is important. If a script is
dependent on a module (e.g., it uses the D3 library), its <script> tag
must be placed after that of the module. In other words, big library
scripts, such as jQuery and D3, will be included first.
Python comes with “batteries included,” a comprehensive set of
libraries covering everything from extended data containers
(collections) to working with the family of CSV files (csv). If you
want to use one of these, just import it using the import keyword:

In [1]: import sys

In [2]: sys.platform

Out[2]: 'linux'

If you don’t want to import the whole library or want to use an alias,
you can use the as and from keywords instead:

import pandas as pd
from csv import DictWriter, DictReader
from numpy import *

df = pd.read_json('data.json')
reader = DictReader('data.csv')

md = median([12, 56, 44, 33])

This imports all the variables from the module into the
current namespace and is almost always a bad idea. One of
the variables could mask an existing one, and it goes
against the Python best practice of explicit being better than
implicit. One exception to this rule is if you are using the
Python interpreter interactively. In this limited context, it
may make sense to import all functions from a library to cut
down on key presses; for example, importing all the math
functions (from math import *) if doing some Python math
hacking.

If you import a nonstandard library, Python uses sys.path to try to


find it. sys.path consists of:

The directory containing the importing module (current


directory)
The PYTHOPATH variable, containing a list of directories
The installation-dependent default, where libraries
installed using pip or easy_install will usually be
placed

Big libraries are often packaged, divided into submodules. These


submodules are accessed by dot notation:

import matplotlib.pyplot as plt


Packages are constructed from the filesystem via __init__.py files,
usually empty, as shown in Example 1-1. The presence of an init file
makes the directory visible to Python’s import system.
Example 1-1. Building a Python package
mypackage
├── __init__.py
...
├── core
│ └── __init__.py
│ ...

...
└── io
├── __init__.py
└── api.py
...
└── tests

└── __init__.py
└── test_data.py
└── test_excel.py
...
...

You would import this module using from


mypackage.io.tests import test_excel.

You can access packages on sys.path from the root directory (that’s
mypackage in Example 1-1) using dot notation. A special case of
import is intrapackage references. The test_excel.py submodule in
Example 1-1 can import submodules from the mypackage package
both absolutely and relatively:

from mypackage.io.tests import test_data


from . import test_data
import test_data
from ..io import api

Imports the test_data.py module absolutely, from the


package’s head directory.

An explicit (. import) and implicit relative import.

A relative import from a sibling package of tests.

Keeping Your Namespaces Clean


The variables defined in Python modules are encapsulated, which
means that unless you import them explicitly (e.g., from foo import
baa), you will be accessing them from the imported module’s
namespace using dot notation (e.g., foo.baa). This modularization of
the global namespace is quite rightly seen as a very good thing and
plays to one of Python’s key tenets: the importance of explicit
statements over implicit. When analyzing someone’s Python code you
should be able to see exactly where a class, function, or variable has
come from. Just as importantly, preserving the namespace limits the
chance of conflicting or masking variables —a big potential problem
as code bases get larger.
One of the main criticisms of JavaScript, and a fair one, is that it
plays fast and loose with namespace conventions. The most
egregious example of this is that variables declared outside of
functions or missing the var keyword8 are global rather than confined
to the script in which they are declared. If you can deal with the
overhead of setting up a modern, modular JavaScript you get Python
like encapsulation with imported and exported variables. While
keeping things simple and using JavaScript scripts, there are various
ways to rectify this situation, but the one I use and recommend is to
make each of your scripts a self-calling function. This makes all
variables declared via var local to the script/function, preventing
them from polluting the global namespace. A new JavaScript let
keyword, which is block-scoped, is pretty much always preferable to
var. Any objects, functions, and variables you want to make available
to other scripts can be attached to an object that is part of the global
namespace.
Example 1-2 demonstrates a module pattern. The boilerplate head
and tail (labeled and ) effectively create an encapsulated module.
This pattern is far from a perfect solution to modular JavaScript but is
the best compromise I know until Ecmascript 6 and a dedicated
import system for the browser becomes standard. One obvious
disadvantage is that the module is part of the global namespace,
which means, unlike in Python, there is no need to explicitly import it.
Example 1-2. A module pattern for JavaScript
(function(nbviz) {
'use strict';
// ...
nbviz.updateTimeChart = function(data) {

// ...
}(window.nbviz = window.nbviz || {}));

Receives the global nbviz object.

Attaches the updateTimeChart method to the global nbviz


object, effectively exporting it.

If an nbviz object exists in the global (window) namespace,


pass it into the module function; otherwise, add it to the
global namespace.

Outputting “Hello World!”


By far the most popular initial demonstration of any programming
language is getting it to print or communicate “Hello World!” in some
form, so let’s start with getting output from Python and JavaScript.
Python’s output couldn’t be much simpler, but version 3 sees a
change to the print statement, making it a proper function:9

# In Python 2*
print 'Hello World!'

# In Python 3+
print('Hello World!')

You can use Python 3’s print function in Python 2 by importing it from
the __future__ module:

from __future__ import print_function

If you’re not using Python 3, then this is a sensible approach but I


would strongly recommend moving to the newer Python.
JavaScript has no print function, but you can log output to the
browser console:

console.log('Hello World!);

Simple Data Processing


A good way to get an overview of the language differences is to see
the same function written in both. Examples 1-3 and 1-4 show a
small, contrived example of data munging in Python and JavaScript,
respectively. We’ll use these to compare Python and JS syntax.
Example 1-3. Simple data munging with Python
# A
student_data = [
{'name': 'Bob', 'id':0, 'scores':[68, 75, 56, 81]},
{'name': 'Alice', 'id':1, 'scores':[75, 90, 64, 88]},

{'name': 'Carol', 'id':2, 'scores':[59, 74, 71, 68]},


{'name': 'Dan', 'id':3, 'scores':[64, 58, 53, 62]},
]

# B
def process_student_data(data, pass_threshold=60,

merit_threshold=75):
""" Perform some basic stats on some student data. """

# C
for sdata in data:
av = sum(sdata['scores'])/float(len(sdata['scores']))
sdata['average'] = av

if av > merit_threshold:
sdata['assessment'] = 'passed with merit'
elif av > pass_threshold:
sdata['assessment'] = 'passed'
else:

sdata['assessment'] = 'failed'
# D
print("%s's (id: %d) final assessment is: %s"%(
sdata['name'], sdata['id'], sdata['assessment'].upper()))

# E

if __name__ == '__main__':
process_student_data(student_data)

Example 1-4. Simple data munging with JavaScript


// A (note deliberate and valid inconsistency in keys: some quoted
// and some unquoted)
var studentData = [
{name: 'Bob', id:0, 'scores':[68, 75, 76, 81]},
{name: 'Alice', id:1, 'scores':[75, 90, 64, 88]},
{'name': 'Carol', id:2, 'scores':[59, 74, 71, 68]},
{'name': 'Dan', id:3, 'scores':[64, 58, 53, 62]},
];

// B
function processStudentData(data, passThreshold, meritThreshold){
passThreshold = typeof passThreshold !== 'undefined'?\
passThreshold: 60;
meritThreshold = typeof meritThreshold !== 'undefined'?\
meritThreshold: 75;

// C
data.forEach(function(sdata){
var av = sdata.scores.reduce(function(prev, current){
return prev+current;
},0) / sdata.scores.length;

sdata.average = av;

if(av > meritThreshold){


sdata.assessment = 'passed with merit';
}
else if(av > passThreshold){

sdata.assessment = 'passed';
}
else{
sdata.assessment = 'failed';
}
// D
console.log(sdata.name + "'s (id: " + sdata.id +

") final assessment is: " +


sdata.assessment.toUpperCase());
});

}
// E
processStudentData(studentData);

String Construction
Section D in Examples 1-3 and 1-4 show the standard way to print
output to the console or terminal. JavaScript has no print statement
but will log to the browser’s console through the console object.

console.log(sdata.name + "'s (id: " + sdata.id +


") final assessment is: " + sdata.assessment.toUpperCase());

Note that the integer variable id is coerced to a string, allowing


concatenation. Python doesn’t perform this implicit coercion, so
attempting to add a string to an integer in this way gives an error.
Instead, explicit conversion to string form is achieved through one of
the str or repr functions.
In section A of Example 1-3, the output string is constructed with C
type formatting. String (%s) and integer (%d) placeholders are
provided by a final tuple (%(…)):

print("%s's (id: %d) final assessment is: %s"

%(sdata['name'], sdata['id'], sdata['assessment'].upper()))

These days, I rarely use Python’s print statement, opting for the
much more powerful and flexible logging module, which is
demonstrated in the following code block. It takes a little more effort
to use, but it is worth it. Logging gives you the flexibility to direct
output to a file and/or the screen, adjusting the logging level to
prioritize certain information, and a whole load of other useful things.
Check out the details here.
import logging
logger = logging.getLogger(__name__)

//...
logger.debug('Some useful debugging output')
logger.info('Some general information')

// IN INITIAL MODULE
logging.basicConfig(level=logging.DEBUG)

Creates a logger with the name of this module.

You can set the logging level, an output file as opposed to


the default to screen.

Significant Whitespace Versus Curly Brackets


The syntactic feature most associated with Python is significant
whitespace. Whereas languages like C and JavaScript use whitespace
for readability and could easily be condensed into one line,10 in
Python leading spaces are used to indicate code blocks and removing
them changes the meaning of the code. The extra effort required to
maintain correct code alignment is more than compensated for by
increased readability—you spend far longer reading than writing code
and the easy reading of Python is probably the main reason why the
Python library ecosystem is so healthy. Four spaces is pretty much
mandatory (see PEP 8) and my personal preference is for what is
known as soft tabs, where your editor inserts (and deletes) multiple
spaces instead of a tab character.11
In the following code, the indentation of the return statement must
be four spaces by convention:12
def doubler(x):
return x * 2
# |<-this spacing is important

JavaScript doesn’t care about the number of spaces between


statements and variables, using curly brackets to demark code
blocks, the two doubler functions in this code being equivalent:

let doubler = function(x){

return x * 2;
}

let doubler=function(x){return x*2;}

Much is made of Python’s whitespace, but most good coders I know


set up their editors to enforce indented code blocks and a consistent
look and feel. Python merely enforces this good practice. And, to
reiterate, I believe the extreme readability of Python code contributes
as much to Python’s supremely healthy ecosystem as its simple
syntax.

Comments and doc-strings


To add comments to code, Python uses hashes, #:

# ex.py, a single informative comment

data = {} # Our main data-ball

By contrast, JavaScript uses the C language convention of double


backslashes (//) or /* … */ for multiline comments:
// script.js, a single informative comment
/* A multiline comment block for
function descriptions, library script
headers, and the like */
let data = {}; // Our main data-ball

In addition to comments, and in keeping with its philosophy of


readability and transparency, Python has documentation strings
(docstrings) by convention. The process_student_data function in
Example 1-3 has a triple-quoted line of text at its top that will
automatically be assigned to the function’s __doc__ attribute. You can
also use multiline doc-strings.

def doubler(x):
"""This function returns double its input."""
return 2 * x

def sanitize_string(s):
"""This function replaces any string spaces
with '-' after stripping any whitespace
"""
return s.strip().replace(' ', '-')

Doc-strings are a great habit to get into, particularly if you are


working collaboratively. They are understood by most decent Python
editing toolsets and are also used by such automated documentation
libraries as Sphinx. The string-literal doc-string is accessible as the
doc property of a function or class.

Declaring Variables, let, var


JavaScript uses let or var to declare variables. Generally speaking,
let is almost always the right choice.
Strictly speaking, JS statements should be terminated with a
semicolon as opposed to Python’s newline. You will see examples
where the semicolon is dispensed with, and modern browsers will
usually do the right thing here. There are few edge-cases that could
necessitate the use of a semi-colon (e.g., it can trip up code minifiers
and compressors that remove whitespace) but generally I find that
the loss of clutter and improvement in readablity are a worthwhile
compromise to coding without the semi-colons.

TIP
JavaScript has variable hoisting, which means variables declared with var are
processed before any other code. This means declaring them anywhere in the
function is equivalent to declaring them at the top. This can result in weird errors
and confusion. Explicitly placing vars at the top avoids this but it’s better to use
the modern let and have scoped declarations.

Strings and Numbers


The name strings used in the student data (see Section A of
Examples 1-3 and 1-4) will be interpreted as UCS-2 (the parent of
unicode UTF-16) in JavaScript,13 and Unicode (UTF-8 by default) in
Python 3.14
Both languages allow single and double quotes for strings. If you
want to include a single or double quote in the string, then enclose
with the alternative, like so:

pub_name = "The Brewer's Tap"


The scores in Section A of Example 1-4 are stored as JavaScript’s one
numeric type, double-precision 64-bit (IEEE 754) floating-point
numbers. Although JavaScript has a parseInt conversion function,
when used with floats,15 it is really just a rounding operator, similar
to floor. The type of the parsed number is still number:

var x = parseInt(3.45); // 'cast' x to 3


typeof(x); // "number"

Python has three numeric types: the 32-bit int,to which the student
scores are cast, a float equivalent (IEE 754) to JS’s number, and a
long for arbitrary precision integer arithmetic. This means that Python
can represent any integer, whereas JavaScript is more limited.16
Python’s casting changes type:

foo = 3.4 # type(foo) -> float


bar = int(3.4) # type(bar) -> int

The nice thing about Python and JavaScript numbers is that they are
easy to work with and usually do what you want. If you need
something more efficient, Python has the NumPy library, which allows
fine-grained control of your numeric types (you’ll learn more about
NumPy in Chapter 6). In JavaScript, aside from some cutting-edge
projects, you’re pretty much stuck with 64-bit floats.

Booleans
Python differs from the JavaScript and the C class languages in using
named boolean operators. Other than that, they work pretty much as
expected. This table gives a comparison:
Python bool True False not and or

JavaScript boolean true false ! && +`

Python’s capitalized True and False is an obvious trip-up for any


JavaScripter and vice versa, but any decent syntax highlighting
should catch that, as should your code linter.
Rather than always returning boolean true or false, both Python and
JavaScript and/or expressions return the result of one of the
arguments, which may of course be a boolean value. Table 1-1 shows
how this works, using Python to demonstrate.

Table 1-1. Python’s boolean


operators
Operation Result

x or y if x is false, then y, else x

x and y if x is false, then x, else y

not x if x is false, then True, else False

This fact allows for some occasionally useful variable assignments:

rocket_launch = True
(rocket_launch == True and 'All OK') or 'We have a problem!'
Out:

'All OK'

rocket_launch = False
(rocket_launch == True and 'All OK') or 'We have a problem!'
Out:
'We have a problem!'

Data Containers: Dicts, Objects, Lists, Arrays


Roughly speaking, JavaScript objects can be used like Python dicts,
and Python lists like JavaScript arrays. Python also has a tuple
container, which functions like an immutable list. Here are some
examples:

# Python
d = {'name': 'Groucho', 'occupation': 'Ruler of Freedonia'}
l = ['Harpo', 'Groucho', 99]
t = ('an', 'immutable', 'container')

// JavaScript
d = {'name': 'Groucho', 'occupation': 'Ruler of Freedonia'}
l = ['Harpo', 'Groucho', 99]

As shown in Section A of Examples 1-3 and 1-4, while Python’s dict


keys must be quote-marked strings (or hashable types), JavaScript
allows you to omit the quotes if the property is a valid identifier (i.e.,
not containing special characters such as spaces and dashes). So in
our studentData objects, JS implicitly converts the property 'name' to
string form.
The student data declarations look pretty much the same and, in
practice, are used pretty much the same, too. The key difference to
note is that while the curly-bracketed containers in the JS
studentData look like Python dicts, they are actually a shorthand
declaration of JS objects, a somewhat different data container.
In JS data visualization, we tend to use arrays of objects as the chief
data container and here, JS objects function much as a Pythonista
would expect. In fact, as demonstrated in the following code, we get
the advantage of both dot notation and key-string access, the former
being preferred where applicable (keys with spaces or dashes
needing quoted strings):

var foo = {bar:3, baz:5};


foo.bar; // 3
foo['baz']; // 5, same as Python

It’s good to be aware that although they can be used like Python
dictionaries, JavaScript objects are much more than just containers
(aside from primitives like strings and numbers, pretty much
everything in JavaScript is an object).17 But in most dataviz examples
you see, they are used very much like Python dicts.
Table 1-2 converts basic list operations.

Table 1-2. Lists and arrays


JavaScript array (a) Python list (l)

a.length len(l)

a.push(item) l.append(item)

a.pop() l.pop()

a.shift() l.pop(0)

a.unshift(item) l.insert(0, item)

a.slice(start, end) l[start:end]


a.splice(start, howMany, i1, …) l[start:end] = [i1, …]

Functions
Section B of Examples 1-3 and 1-4 shows a function declaration.
Python uses def to indicate a function:

def process_student_data(data, pass_threshold=60,


merit_threshold=75):
""" Perform some basic stats on some student data. """

...

whereas JavaScript uses function:

function processStudentData(data, passThreshold, meritThreshold){


passThreshold = typeof passThreshold !== 'undefined'?
passThreshold: 60;
meritThreshold = typeof meritThreshold !== 'undefined'?
meritThreshold: 75;
...
}

Both have a list of parameters. With JS, the function code block is
indicated by the curly brackets { … }; with Python, the code block is
defined by a colon and indentation.
JS has an alternative way of defining a function called the function
expression, which you may see in examples:

let processStudentData = function( ...){

There is now a shortened form , which is becoming more popular:


Another Random Document on
Scribd Without Any Related Topics
Muy cerca de ellos estaba parado un simón abierto. El rocín
macabro, en los puros huesos, contemplaba con tristes ojos el albear
del cielo. El cochero dormía sentado en el piso del coche con los pies
en el estribo y la cabeza caída sobre el asiento.
Durante el trayecto ninguno de los dos amigos desplegó los
labios. En la caja de la escalera flotaba un vapor grisáceo,
melancólico y soporífero como sensación de convalecencia. Un
pájaro cantó.
—Es algo aquí, en semejante parte —murmuró Teófilo, señalando
la base de la caja torácica—. Algo que me ahoga, que me arrebata,
que me enfurece —añadió, levantando la voz y crispando los puños.
—Habla bajo.
—Es algo aquí, como una espada mohosa que me atravesara.
Siempre lo he sentido, desde que era niño; pero hoy más fuerte que
nunca. Es algo anterior a mi vida, ¿entiendes?, como el recuerdo de
una mala sangre que me hubiera engendrado, ¿entiendes?; es algo
que me ha hecho desgraciado sin que yo tenga la culpa, ¿entiendes?
—No te entiendo, porque eso son locuras. Hazme el favor de
callar o de bajar la voz.
Cuando se acercaban al segundo rellano, la puerta se abrió,
apareciendo, entre la luz incierta de la matinada y a medias disuelta
en la penumbra, la figura de doña Juanita, quien dijo, con voz
cansada y amorosa:
—Hijo de mis entrañas.
Teófilo hubo de apoyarse en Guzmán para no dar en tierra. Con
acento estrangulado de ira o de pavor, bramó:
—¿Sueño? Apártate de mí, sombra maldita.
La anciana avanzó un paso y su lóbrego cuerpo destacó sobre el
gris caótico.
—¡Hijo! ¡Hijo! —La primera exclamación fue de estupor, la
segunda de manso reproche.
—Apártate de mí, odiosa criatura; apártate, apártate que no te
vea, porque te desharé entre mis manos —y Teófilo forcejeaba por
desasirse de los brazos de Alberto.
Doña Juanita se perdió, huyendo, en el seno de las tinieblas.
Guzmán retuvo unos minutos a Teófilo y luego le condujo a su
alcoba. En estando dentro de la estancia, el poeta se desbordó en
manifestaciones de violenta rabia. Hacía añicos cuanto encontraba
por delante, emitía sonidos sordos y palabras incoherentes, y de
pronto comenzó a saltar y a correr como loco en torno al aposento.
Por último, se dejó caer en la cama boca abajo, hundió la cabeza en
la almohada y así estuvo unos minutos. Incorporose súbitamente, y
con desvariados ojos se quedó mirando a Guzmán, que estaba
inmóvil en el centro de la habitación.
—¿Eres un hombre? ¿O eres una estatua de piedra? ¿Qué haces?
¿Qué miras? ¿Qué piensas? ¿Qué dices? ¿Sonríes? Dame tu corazón
de bronce; muéstrame cómo he de llegar a tu indiferencia e
insensibilidad.
—Ea. Ahora acuéstate y haz por dormir —Guzmán estrechó la
mano de su atribulado amigo y salió en busca de la madre, a quien
imaginaba más atribulada aún.
Estaba la señora en su aposento, sentada, y, según las señales
exteriores, muy tranquila. Antes de que Alberto abriera la boca, doña
Juanita se adelantó a hablar:
—No se moleste usted en consolarme, señor de Guzmán. Le
agradezco su buena intención; pero en este caso no necesito
consuelo.
—Es que...
—No, no; ni una palabra. Las cosas del alma son harto sutiles,
señor de Guzmán, para que los hombres las entiendan. Solo
incumben a Dios, y Dios sabe lo que se hace. Retírese a dormir que
ya es tarde y déjeme a solas. ¿No ve usted que estoy serena? De
todas suertes, muchas gracias por su solicitud. Buenas noches.
Guzmán se retiró pensando: «Nunca sabemos nada de nada.»
Al día siguiente doña Juanita salió para Valladolid.
VIII

Una mañana estaba Guzmán todavía en la cama, leyendo Las


Moradas, de Santa Teresa, cuando la ventruda Blanca penetró en la
habitación con un gran sobre color espliego, perfumado de violeta.
Decía la carta:

Querido Alberto: pásate por mi hotel cuanto antes mejor.


Tengo que comunicarte una cosa que te hará la mar de gracia.
Estupendo, chico, estupendo. Un caso de vocación; pero qué
vocación. ¿Quieres venir a almorzar conmigo? Tu amiga,
Rosina.

Se levantó y a gritos desde la puerta pidió agua caliente para


afeitarse. A poco se presentó una monja vieja, con el cacharro de
agua caliente.
—Buenos días, sor Cruz.
—Buenos días nos dé Dios. ¿Se ha dormido bien? ¿A qué hora
hemos venido anoche? Esta juventud... Ya me lo dirán ustedes
cuando se hagan viejos y se acerque el momento de la muerte...
—Vaya, vaya, sor Cruz. No me amargue el día dándome a
desayunar ideas tristes.
—¿Qué estaba leyendo usted ahí? Cualquier libro empecatado,
como si lo viera —sor Cruz se acercó a curiosear en la mesa de
noche—. Un libro de Santa Teresa. ¡Válgame Dios! ¿Un herejote lee
estas cosas? Como no sea para hacer mofa...
—Mal concepto tiene usted de mí, sor Cruz.
—Y una cartita. De alguna desgraciada... Vaya por Dios. Lástima
merecen las tales. Bien lo sé por experiencia. Y algunas son buenas,
buenas hasta dejarlo de sobra. La culpa es de ustedes, libertinos. Ya
lo ha dicho mi tocaya: «Hombres necios que acusáis...»
—¿Cuándo se van ustedes, sor Cruz?
—Mañana, en el tren de las ocho de la mañana. Antonia no quiere
dejarnos marchar; pero no hay más remedio. Nos ha escrito la
superiora. De manera que pasado mañana ya estamos en nuestro
convento de Pilares. Tengo una gana que no veo de encontrarme en
mi celdita, y a bregar con aquellas infelices recogidas. Si usted fuera
hembra en lugar de varón nos lo llevábamos a meterle por el buen
camino.
—Si usted quiere llevarme tal como soy... No crea, a mí me
gustaría.
—Señor, qué atrevido. Sería el diablo en el convento. Y esa pobre
Lolita... ¿No cree usted que estaría mejor con nosotras?
—Pss. Déjela usted. Si ella se encuentra a gusto... En todas
partes y de todas maneras se puede servir a Dios —dijo Alberto.
—¡Jesús, qué abominaciones! Me voy, no quiero oírle a usted —y
sor Cruz salió riendo con benevolencia.
Las relaciones de Antonia eran innúmeras, complejas, y con todas
las clases de la sociedad. A raíz de haber tenido a Amparito había
estado recogida en el convento de monjas adoratrices de Pilares y se
había captado el afecto de las monjitas. Una de las recogidas,
compañera y muy amiga de Antonia, había profesado en la orden,
bajo el nombre de sor Sacramento, la cual, en unión de sor Cruz,
estaba hospedándose ahora en casa de Antonia, de paso por Madrid.
Siempre que venía a la corte alguna monja del convento de Pilares
se alojaba en casa de Antonia.
Salió Alberto de casa, no sin haber guardado en el bolsillo Las
Moradas, porque tenía por costumbre llevar siempre un libro
consigo, y fue derechamente al hotel Alcázar. Rosina salió a recibirle
en peinador y le regaló con un beso de salutación.
—No te parecerá mal que te bese, ¿eh?
—Ni que fuera tonto —respondió Guzmán, devolviéndole
afectuosamente el regalo.
—Eso ya no. Te beso como se besaría a un hermano. Te quiero
mucho, pero como se quiere a uno de la familia. Estoy segura que si
Fernando me viera besarte no lo tomaría a mal. Siéntate. Yo voy a
concluir de vestirme. ¿Te quedas a almorzar conmigo? —Alberto
asintió—. Quizás venga Verónica también. ¡Qué chica tan excelente!
Somos las grandes amigas. A nosotras nos ha pasado como con ese
drama que le dicen El Galeoto: el público nos ha hecho amigas. Que
si ella es la mejor bailarina y yo la mejor cupletista, y que si somos
las únicas, y dale y dale; pues a mí me entró la curiosidad de
conocerla y a ella lo mismo, y aquí nos tienes a partir un piñón.
Sobre todo desde que se concluyó la temporada de ella y la mía;
pues, hijo, que no se aparta de mi lado. Parece que me adora.
—Bien. ¿Qué era la cosa que me iba a hacer la mar de gracia?
—¡Pues no eres nada ansioso! Calma, calma, porque hasta la
hora del almuerzo no digo esta boca es mía.
—Poco falta ya, de manera que tendremos calma.
—¿Qué es de Teófilo?
—En casa estará durmiendo...
—Siempre dije que era un gran hombre. Ya ves, ahora todo el
mundo lo reconoce así —Rosina cambió de expresión—. Tú ya sabes
que Teófilo y yo hemos sido muy amigos un poco de tiempo.
—Sí, lo presumía.
—Ahora parece que me aborrece. ¿Tú que crees?
—Lo que tú; que está enamorado de ti.
—Perdona. Por esta vez tu listeza se me figura que ha fallado. Tú
sabrás de otras cosas; pero lo que es de aquello que se refiere a mí
directamente, no me vengas con pamplinas. Si tratas de halagarme,
te advierto que no es por ahí. Fernando es mi sino y con él he de
vivir lo que me reste de vida. Así es que me tiene sin cuidado que
Teófilo esté o no esté enamorado; pero, la verdad, tampoco me hace
gracia que me odie y me trate con desdén. Yo no le hice nada malo.
Lo que hice fue lo que no pude menos de hacer —el rostro de la
mujer adquirió una expresión meditativa.
Desde que había vuelto a Madrid, Rosina no se había visto a solas
con Teófilo, sino siempre rodeados de otras muchas personas.
Teófilo, aunque con la pasión más embravecida que nunca, había
resuelto evitar a Rosina y darle a entender que la desdeñaba, lo
cual, hasta aquel punto, había logrado sobradamente. Rosina
consideraba el amor a su hombre, a Fernando, como la necesidad
permanente de su vida, el nido, el árbol, la tierra, la base en donde
posarse y reposarse. Fernando era para ella la plenitud de su
feminidad, de su sexo. Pero, al propio tiempo, necesitaba del amor
de Teófilo, lo ansiaba como complemento y realce del otro amor. Un
ave ignora que sufre la tiranía de la tierra hasta tanto que no se le
entumecen las alas o las pierde; entonces, junto con la nostalgia del
vuelo, llega a saber que la tierra es el elemento que la domina, así
como el aire es el elemento que se deja dominar. Pues algo
semejante le sucedía a Rosina. Con relación a Fernando se sentía
empequeñecida, anulada, entregada sin albedrío a él. Recordando
ahora el sumo acatamiento y entrega que de sus potencias Teófilo le
había hecho en otro tiempo, y la exaltación gozosa y altanera que de
aquel amor ella había recibido, ardía en anhelos de resucitar las
emociones de entonces.
Llegó Verónica cuando Rosina concluyó de vestirse. Rosina hizo
que les sirvieran el almuerzo en la misma habitación.
—Qué, ¿has tenido noticias de Fernando? —preguntó Verónica.
—Hoy no.
—¿Te escribe todos los días?
—Quia. No se arregla bien con lo negro; pero, en fin, escribe tan
a menudo como puede. Eso sí, a mí me obliga a ponerle un
telegrama diario y una postal por lo menos. Es celosísimo.
—Claro, si te quiere. ¡Hija, qué suerte la tuya! Ya puedes
corresponderle bien, porque un novio así no se atrapa todos los días.
Yo no sé como hay mujeres que falten a sus hombres si estos las
quieren de verdad y con fatigas. Por supuesto, no lo digo por ti;
contigo no hay caso.
—Qué ha de haber... Y menos teniéndote a ti al lado, que estás
siempre con la misma canción.
—Y ahora —entró a decir Guzmán—, ¿se puede ya saber aquello
que me iba a hacer la mar de gracia?
—Todavía no. De sobremesa.
—Resignación.
En concluyendo de almorzar, Guzmán reiteró la pregunta.
—Sí, ahora os lo voy a referir. Y no sé cómo. Es increíble. Si no
estuviera aquí cerca la heroína creeríais que os trataba de tomar la
cabellera. Bien, doy principio a mi cuento, es decir, a mi historia.
Estaba yo esta mañana en la cama cuando entra la doncella diciendo
que una joven preguntaba por mí. Que pase. Y ya está aquí la joven,
vestida de negro, muy asustadita y muy monina, sí, señores.
«Señorita Rosa», me dice, y parecía que iba a llorar. «¿No me
conoce?» ¡Qué la iba a conocer yo! «Soy Márgara, la hija de
Bergantín». Este Bergantín es un pescador y bañero de mi pueblo.
«Pero, neña, cómo has crecido y qué guapina estás», le dije yo. Ella
se puso muy colorada. Le pregunté a qué había venido a Madrid. Al
principio no se atrevía a decir nada; pero fue animándose,
animándose poco a poco y me contó lo que le pasaba. Veréis. Dice
que en Arenales había llegado a ser muy desgraciada. La cortejaban
muchos mozos; pero ninguno le gustaba a ella. Durante los veranos,
los señoritos veraneantes no la dejaban vivir, persiguiéndola sin
parar, ya podéis suponer con qué intención. Jura que hasta ahora
ningún hombre la ha tocado, y yo lo creo. Dos horas o muy cerca
empleó en contarme mil menudencias. Yo abrevio. La cosa fue que
comenzó a entrarle un gran disgusto por todo lo que veía en el
pueblo; se apartó de las amigas y se encerraba a solas a llorar. Oye,
tú, no seas grosero y cierra ese libro.
—Te escucho, Rosina. He tenido una inspiración. Este libro nos
ayudará a entender el asunto de que se trata. Verás, esa doncella
sentía, según dice este libro, ansias y lágrimas congojosas y sospiros
y grandes ímpetus.
—Todo eso y mucho más, porque ella misma dice que no sabe
explicarlo.
Guzmán volvió unas cuantas hojas y leyó:
—Es dificultosísimo de dar a entender.
—Dificultosísimo. Ya veréis en lo que para.
—Lo presumo —dijo Guzmán.
—Eso ya lo veremos. Dice que creyó morirse de tristeza, que no
tenía interés por nada, que no sabía lo que quería, que le entraba un
dolor en las entrañas como de fuego y después quedaba toda
rendida, que le parecía estar rodeada de enemigos malos y a veces
tenía que dar gritos y, vaya...
—Hace crecer la pena en tanto grado que procede quien la tiene
en dar grandes gritos —interrumpió Guzmán, leyendo. Prosiguió—:
Parece un fuego que está humeando y se le representó ser de esta
manera los sentimientos que padecen en el purgatorio. Y así,
aunque dure poco, deja el cuerpo muy descoyuntado y los pulsos
tan abiertos... —Guzmán espigaba en el libro y leía a retazos.
—¿Pero te estás chungando de mí con todos esos camelos que tú
mismo inventas?
—Prosigue, Rosina.
—Si te estás callado. Entonces, al parecer, se puso a trabajar
como una bestia para olvidarse de todo. De esta manera parece que
se contentó algo; pero aquella otra cosa rara, un no sé qué que
sentía en el corazón, continuaba siempre.
—Los contentos —leyó Guzmán— nacen de la misma obra que
hacemos y parece los hemos ganado con nuestro trabajo. Los gustos
ensanchan el corazón. Esa muchacha quería meterse monja y viene
a pedirte el dote.
Rosina rompió a reír descompuestamente.
—¿Cómo lo has averiguado? —preguntó, sin cesar de reirse.
—¡Qué mundo! —exclamó Verónica.
—No es nada difícil caer en la cuenta —añadió Guzmán.
—Estás fresco. Conque, ¿monja, eh? Pues, hijo, todo lo contrario.
—¿Todo lo contrario? —inquirió Verónica, boquiabierta—.
Entonces fraile.
—Sí —respondió Rosina—, de San Ginés, que se acuestan dos y
amanecen tres. Quiere ser una cocotte, como yo, y reinar en el
mundo y sus arrabales, porque ella se figura que ser cocotte y
emperatriz es la misma cosa.
—Pues está enterada —comentó Verónica.
—Me dejas anonadado —confesó Guzmán—. ¿Y cómo fue? ¿No te
ha explicado?
—Pues fue que llegaron a Arenales los periódicos con mis retratos
y los bombos que me han dado, y todas esas paparruchas que
cuentan acerca de mis triunfos en Rusia y en Pekín y en donde
Cristo dio las tres voces, y cátate que la niña piensa: «Yo voy a ser
otra como Rosina.» Y sin más se escapa de su casa y se me
plantifica aquí. Decía, con deliciosa ingenuidad: «Es mi vocación.
Comprendí de pronto que era mi vocación.» Ya veis: vocación de
cocotte...
Pausa.
—Y ahora, ¿qué vas a hacer con ella? ¿Devolverla a su familia? —
inquirió Guzmán.
—Ya, ya. De eso traté; pero habíais de ver cómo se puso la
mosquita muerta. No me lo dijo, pero le conocí en los ojos que
pensaba que yo era una envidiosa. Le dije que de un millón de
mujeres que se pierden, solo una, y a veces ninguna, llega a darse
buena vida. En balde, chicos: ella erre que erre. ¿Qué hacemos?
¿Qué os parece?
—Darle cuatro azotes y enviarla facturada al pueblo —aconsejó
Verónica, con ardimiento.
—Tengo un proyecto. A ver qué opináis —habló Guzmán.
—Venga de ahí, que siendo tuyo será bueno —jaleó Verónica.
—Es esto. Por la noche cogemos a esa niña y nos la llevamos de
casa en casa, a través de todas las casas de mal vivir, desde las de
ínfima categoría hasta las de cierto rango. Alistaremos a unos
cuantos amigos, reconocidamente brutos, y haremos que beban y
desarrollen su brutalidad hasta la máxima potencia. Buscaremos
aquellos antros en donde no se puede entrar sin que el alma se aflija
y le haremos ver a Márgara, ¿no has dicho que se llama Márgara?,
que lo más probable es que vaya a dar con sus huesos allí si se
obstina en seguir esa vocación que dice tener...
—¿Y nosotras vamos a ir también? —preguntó Rosina, algo
alarmada.
—¿Por qué no, boba? Nos ponemos un mantoncito...
—No tengo mantón.
—Yo te lo prestaré. Ya verás, hasta nos vamos a divertir.
—Tanto como divertir... —observó Alberto—. Entonces, ¿qué os
parece?
—A mí, de perlas —declaró Verónica.
—Sí, yo también creo que es una buena idea. Entonces... ¡Ah!
Tenéis que conocer a Márgara —Rosina se levantó y llamó al timbre.
Cuando apareció la camarera, Rosina añadió—: Que venga esa chica
que llegó esta mañana.
Presentose Márgara. Era antes alta que baja, gentilísima: un
armonioso aire de nobleza natural en toda su persona y
movimientos. Muy morena, casi bronceada; tenebroso el cabello; los
ojos pequeñuelos, duros y perseverantes en el mirar; los labios
apretados y finos, y dientes menudos de roedor; dulce pelusa por la
quijada y sobre el labio. No era bella; era peor que bella:
diabólicamente incitativa.
—No tengo más que verte la cara para comprender que te gusta
de una manera enorme —dijo Rosina a Guzmán por lo bajo. Y luego,
en voz alta—: Es bonita, ¿verdad? Pues si vierais qué carnes, qué
durezas —y comenzó a oprimirle los senos y los muslos—. Tocad. Es
mármol.
Verónica fue a probar y corroboró el juicio de Rosina, la cual,
dirigiéndose a Guzmán, le invitó a cerciorarse por experiencia
personal.
—Toca, hombre, y no seas primo. Si a ella no le parece mal,
¿verdad, Márgara?
Márgara no respondió. Guzmán hubo de experimentar la dureza
específica de Márgara.
—Sí, parece una estatua —declaró Guzmán, aludiendo, no tan
solo a las apretadas carnes, sino a la digna y fría inmovilidad en que
se mantuvo la muchacha.
Quedó todo convenido para la noche y Guzmán se despidió.
A media noche salía del hotel Alcázar la pandilla, compuesta de
Rosina, Verónica y Márgara, a pelo y con mantones achulados, y
Angelón Ríos, Travesedo, Guzmán, Celedonio Grajal y Felipe Artaza,
muy conocidos estos dos últimos en el mundillo del libertinaje y de
la juerga por el mucho dinero que tenían, por la manera ostentosa
de gastarlo, por la excesiva afición a los placeres báquicos y
venustos, por la heroica resistencia y brío en uno y otro ejercicio, y,
en suma, por sinnúmero de hazañas elegantes e ingeniosas, tales
como arrojar a una mujer cortesana al estanque del Retiro, apalear a
un guardia, hacer añicos los muebles de un restorán, meterse con el
automóvil por el escaparate de una tienda y reparar luego los daños
y perjuicios con jactanciosa largueza. Constituían dos tipos, o mejor,
arquetipos del héroe moderno, a quien el prosaísmo de la vida
contemporánea fuerza y constriñe a emplear el esforzado ánimo en
empresas poco lucidas y muy inferiores a su ímpetu y arrestos. Con
todo, como la plebe propende siempre a admirar el carácter heroico
y encarece sus hechos trocándolos en animada narración oral, que a
veces se alza hasta crear la leyenda, Grajal y Artaza tenían su gesta
heroica popular que era muy celebrada por estudiantes, horteras y
provincianos en las tertulias de los cafés.
Encamináronse todos, lo primero, a casa de la Socorrito, una casa
de cinco duros. Fueron muy bien acogidos por la dueña, que tenía
en los dos héroes sendas fuentes de muy caudalosos rendimientos.
Además, la Socorrito había oído cantar a Rosina y visto bailar a
Verónica, y las admiraba mucho, según ella misma declaró en
seguida, si bien, como sevillana, opinaba que el cante jondo y el
baile flamenco, lo castizo en una palabra, son superiores a las
danzas y los cuplés modernistas.
Pasaron los visitantes al comedor, atalajado con muebles de nogal
y herrajes dorados. La Socorrito llamó a las niñas que se hallaban
libres. La Socorrito era una mujer joven, agraciada y pizpireta.
Llevaba un pañolillo andaluz, de crespón verde veronés, sobre el
busto; el peinado caído en crenchas, agitanadamente, y flores
debajo del moño. Presumía de usufructuar el monopolio de la sal;
subrayaba las frases con guiños y sonrisas maliciosas, como si cada
palabra suya tuviera un valor cómico extraordinario. Llegaron al
comedor tres de las niñas: la Talones, la Lorito y Pepita, ni guapas ni
feas, vestidas con discreción, como señoritas de la clase media. Al
ver tanta gente, y en particular tres personas de su mismo sexo, se
corrieron no poco y se sentaron en actitud cohibida, de la cual no
lograron hacerles salir las vayas, desatinos y sobos de Angelón,
Grajal y Artaza.
Artaza pidió champaña, y salió la Socorrito a buscarlo. No bien
hubo salido, cuando la Talones dijo, aludiendo a la dueña:
—Es más templada y más graciosa. Luego tié cada golpe.
Entre las tres pupilas comenzaron a hacer el elogio de la
Socorrito. Había sido —y aún coleaba, afirmó la Lorito— querida de
uno de los hermanos González Fitoria, los celebrados autores de
comedias.
—¿Creen ustedes —preguntó Pepita, mirando a Rosina— que las
comedias de los Fitoria son de ellos? ¡Quia!
—Pues, ¿de quién son? —interrogó Travesedo.
—¿De quién? Anda, pues de la Socorrito. Todos, pero así, todos
los chistes y golpes que ponen en las comedias son de la Socorrito.
Si lo sabremos nosotras... Tiene un ángel esta mujer... Nosotras nos
fijamos en sus chistes y decimos: en la primera comedia que
estrenen los Fitoria saldrán estos chistes. Luego, en el estreno,
porque nunca faltamos a los estrenos (la Socorrito nos lleva), zas,
los chistes del último semestre, uno por uno.
—¿Es posible? —inquirió Travesedo, con escepticismo.
Las tres pupilas, con la gravedad que el caso requería, juraron por
la salud de las madres respectivas que aquello era la pura verdad y
que ellas eran testigo de mayor excepción.
Angelón reía a torrentes.
—Aun cuando no fuera verdad, tiene la mar de gracia —dijo
Travesedo—. Y pensar que los Fitoria son los autores favoritos de las
niñas cursis y de las incultas clases burguesas... Admirable. Si uno
pudiera decir en un teatro: sandio y pazguato público,
paquidérmicas matronas, amenorreicas doncellas e idiotas niños
litris; los donaires que con tanto gusto reís son donaires de una
alcahueta, espigados por los autores en el muladar de una
mancebía. Por supuesto, eso no puede ser.
Volvió Socorrito con algunas botellas de champaña. A poco llegó
una nueva pupila; venía con abrigo de calle y mantilla. Era casi una
niña, de belleza nada común. Se llamaba Remedios y bailaba en un
cine todas las noches.
—Ven a sentarte aquí, chuchería, preciosidad —gritó Artaza,
golpeándose los muslos. Remedios, después de despojarse del
gabán, fue a sentarse sobre las piernas de Artaza, con desenfado
más de inocencia que de corrupción.
Después de beber el champaña, los visitantes se marcharon.
Rosina, Márgara y Guzmán hicieron terna aparte.
—¿Qué te parece esa chica que llegó a última hora? —preguntó
Rosina.
—Es preciosa, guapísima —respondió Márgara.
—Pues ya ves cómo y en dónde está. ¿Quién crees que es más
guapa, ella o tú?
—Ella, ella ye mucho más guapa —dijo Márgara, con vehemente
convicción.
—Pues ya ves, hija. Y no se puede quejar de que le falten
ocasiones de lucirse y cazar hombres ricos.
Rosina continuó sermoneando y haciendo tenebrosas pinturas de
la vida que llevan las mujeres recluidas en una casa de trato, y cómo
todo el dinero que ganan se queda entre las uñas de la dueña y a la
postre casi todas terminan en un hospital, y por ahí adelante.
En esto, los que iban a la vanguardia se cruzaron con Teófilo.
Angelón obligó al poeta, quieras que no quieras, a sumarse a la
pandilla.
El segundo lugar que visitaron fue la casa de la Alfonsa, una casa
de a duro, en donde las pupilas proporcionaban al parroquiano
voluptuosidades antinaturales y perversas.
En el umbral de la casa había una gran losa de mármol, con letras
negras, que decían: ALFONSA.
Pasaron todos a la sala de recibir, pieza rectangular, empapelada
de rojo, con divanes también rojos en derredor. Sobre los divanes, y
sentadas la mayor parte a la turca, había hasta siete mujeres, muy
pintadas, con tocados complejísimos y oleaginosos, vestidas como
máscaras, descotadas hasta el ombligo y mostrando las piernas.
Tenían todas ellas un mirar manso y lelo, de vacas. Había una negra.
Otras eran portuguesas y dos francesas. No había ninguna española.
Algunas eran bastante lindas, señaladamente Lilí, una francesa, que
hacía crochet en aquellos momentos, sin manifestar ningún interés
por los recién llegados. Grajal propuso que las niñas hicieran cuadros
vivos.
—¿Qué es eso? —inquirió Rosina.
Se lo explicaron. Hubo necesidad de pagar cinco pesetas por cada
una de aquellas siete mujeres. La encargada examinó las piezas de
plata recibidas, calándose unos lentes de recia armadura de cuerno.
Salieron las mujeres y volvieron muy pronto, desnudas. En el centro
de la estancia, sobre unas colchonetas que al efecto había
introducido la encargada, las siete mujeres, desnudas, comenzaron a
hacer simulaciones de amor lésbico y otra porción de nauseabundas
monstruosidades. Rosina, Verónica y Márgara, rojas de vergüenza
por su propio sexo, se levantaron y salieron, seguidas de los
hombres.
En la calle, Rosina volvió a la carga, haciendo saludables
consideraciones que Márgara escuchó con hosco silencio.
De casa de la Alfonsa fueron a una casa de la calle del Horno de
la Mata, de dos pesetas. A medida que se internaban por aquellos
sombríos y fétidos senos de Madrid menudeaban los grupos de
rameras de ínfima condición, apostadas de trecho en trecho por
socaliñar viandantes.
Entraron los peregrinos excursionistas en un enorme caserón, en
donde, según se les había dicho, cada uno de los pisos era una casa
de bajo estipendio. Llamaron, a la ventura, a una puerta.
Entreabriose la mirilla; les preguntaron, quién; luego se oyeron
gritos en el interior: Casianaaa... Opulencia... Pero no abrían. Dos
duros que Grajal introdujo por la mirilla forzaron las puertas del
antro. Oficiaba de portera una criatura indefinible y lamentable; la
cabellera era femenina, y el rostro varonil, hirsuto; para hallarle los
ojos era menester una larga investigación; el cuerpo, raquítico;
chato el pecho. Esta inquietante criatura condujo a los visitantes a
una alcoba amplia, en donde había una cama matrimonial de blanca
madera curva, algunas sillas y un lavabo. Poco después, la dueña
hizo su aparición; era gorda, vieja y sucia.
—¿Qué hueso se os ha roto por aquí? —preguntó con voz
insolente y gesto desconfiado.
—Pues, ya ves —respondió Angelón—. Venimos a hacer una visita
a tu palacio. Enséñanos las niñas.
—Están haciendo la calle.
—Pues que traigan champaña —ordenó Artaza.
—Mal rayo te parta. ¿Quieres quedarte conmigo?
Artaza puso un billete de cinco duros en manos de la mujer, la
cual se domesticó al instante.
—Opulencia, trae sidra y cerveza. ¿Queréis cerveza? Y sal a la
calle, que vengan las niñas.
Cuando la llamada Opulencia, que era la criatura indefinible, salió,
Travesedo, obedeciendo a los requerimientos de su carácter
inquisitivo, preguntó por qué habían apodado así a aquella mujer. La
dueña lo explicó. Opulencia, al parecer, aunque no en tanto grado
como la Socorrito, era también dicharachera y sentenciosa. Aquel
cuerpo ambiguo y encanijado encerraba una gran dosis de sabiduría
práctica, que brotaba acuñado en forma proverbial. Su sentencia
favorita era: «Donde no hay opulencia no hay meneo», y de aquí le
venía el remoquete. Volvió Opulencia con la bebida, y en aquel
punto a Grajal le acometió el capricho de verla desnuda.
—¿Quieres desnudarte delante de nosotros? —preguntó Grajal.
—¿Desnudarme? —exclamó Opulencia, manifestando a flor de
piel sus ojillos tenaces de insecto venenoso.
—Sí, desnudarte. Tres pesetas te doy.
—¿Desnudarme? —repitió Opulencia, esforzándose en darse por
enterada de la proposición.
—Tendrá miedo que lo sepa su novio —observó la dueña.
—¿Su novio? —preguntó Rosina maravillada.
—Sí, mi novio, mi querido, mi cabrito si quieres —se apresuró a
decir Opulencia con los brazos en jarras. Su expresión era
perfectamente zoológica. Era absurdo suponer que detrás de aquel
rostro se escondiese un espíritu humano.
—¿Qué edad tienes? —preguntó Alberto.
—Veinte —respondió la dueña.
Verónica no pudo menos de exclamar:
—Eso pal gato.
—Sí, veinte, veinte, veinte —afirmó Opulencia, subiendo la voz.
—¿Sabes contar? —preguntó Alberto.
—¿Contar qué?
—Contar números.
—No, pero tengo veinte.
—Bueno, a lo mío; dos duros te doy, ¿quieres desnudarte?
Opulencia consultaba con los ojos a la dueña. Decidiose con
impulso repentino.
—¡Qué Dios! Dos machacantes son dos machacantes. Donde no
hay opulencia no hay meneo.
Allí mismo y con presteza quedó desnuda. Iba desprendiéndose
de sus fementidas prendas indumentarias, que caían a tierra,
formando un cerco alrededor de sus pies; la falda, la enagua de tela
escocesa, y otras vestiduras más interiores, de un blanco
arqueológico, con reliquias de la historia sexual de Opulencia. Al
propio tiempo, la atmósfera íntima de aquel desdichado cuerpo se
expandía en el aire a manera de husmillo bascoso difícil de soportar
con entereza. Cuando se quedó desnuda, sin otros atavíos que unas
medias color lagarto, sujetas con bramantes a guisa de ligas, y unas
botas destaconadas, Opulencia saltó por encima del cerco que las
ropas ponían a sus pies y se mostró, con inconsciente impudicicia, a
la admiración de los circunstantes. Veíasele el esqueleto, malamente
tapado por la parda pelleja, pegada al hueso. Sus senos eran
flácidos por modo increíble, cónicos y negruzcos, como coladores de
café. De la coyuntura de los muslos le brotaba una madeja capilar,
abundosa y salediza, como el extremo de un rabo de buey. Parecía
la creación macabra de uno de aquellos pintores medioevales,
atosigado por el terror de la muerte y del diablo. Angelón, Grajal y
Artaza le prodigaron requiebros sarcásticos que Opulencia admitía
con estulta complacencia, y le indujeron a hacer actitudes
escultóricas, a lo cual ella se prestó dócilmente. Grajal cogió un
enorme gato capón que por allí andaba y se lo dio a Opulencia,
diciendo:
—Así; te lo pones así. Esta pierna más hacia atrás. Los ojos
elevados al cielo. De órdago. Ahora eres Diana cazadora.
—¡Basta! —suplicó Travesedo.
—¡Basta, basta, por Dios! —añadió Verónica, con lágrimas en los
ojos.
—Como ustedes quieran. Puedes vestirte, Opulencia —habló
Grajal.
A medida que Opulencia se vestía iban surgiendo nuevas
mujeres: la Coral, picada de viruelas y los ojos encenagados en el
pus de una oftalmía purulenta; la Leopolda, segoviana, según dijo,
joven y bonita; la Araceli, coja y con cara de foca; la Aragonesa, de
pecho prominente, expresión abatida y la piel revestida de dura
costra rojiza, como un dermatoesqueleto. Todas ellas ostentaban
dolorosa estolidez, y apenas si se les descubría atisbos de
racionalidad. Preguntaron a los hombres en qué cine o café
cantaban, dando por sentado que eran cantadores o ventrílocuos, y
a las mujeres en qué casa de trato estaban de pupilas.
Oyose llorar a un niño: sus lamentos eran desesperados,
lacerantes. La Aragonesa salió y volvió a poco, dando el biberón a
una criatura de pocos meses, toda llagada, ciega. El niño resistíase a
tomar el biberón y lloraba exasperadamente.
—¿Es su hijo? —preguntó Verónica.
—Sí. Tómalo, condenao, que ahora iremos a la botica —rezongó
la madre, introduciendo a la fuerza el pezón de goma en la boca del
niño.
—¿Qué tiene? —preguntó Rosina.
—Sífilis —respondió la madre.
—Entonces usted... —insinuó Verónica.
—Yo no. ¿Qué t’has creído? La cogió la criatura, cuando yo estaba
embarazada, de un cochino sifilítico que se ocupó conmigo. Pero yo
estoy tan sana como tú. Oye, ninchi —añadió, volviéndose hacia
Artaza—, dame dos pelas pa la medecina.
Artaza se las dio.
En aquel abyecto concurso de mujeres perdidas sin remisión
destacaban con triste contraste el encanto esquivo de Márgara, el
brío latente de Verónica y la bella serenidad de Rosina.
Los visitantes salieron a la calle, después de haber dejado algún
donativo metálico, y caminaron en silencio largo rato. Angelón fue el
primero en decir:
—Così va il mondo.
—Y nosotros no lo hemos de arreglar, de modo que vamos a
concluir la noche en la Bombilla —propuso Artaza.
Teófilo tenía el alma arrebatada y el cerebro como dormido. Toda
la pasión que sentía por Rosina se señoreaba de él más
tiránicamente que nunca. Afectaba desdeñosa frialdad y perfecta
indiferencia; pero el corazón se le quebraba por momentos y perdía
el dominio de sí mismo. Pensó marcharse, pero le faltó la fuerza de
voluntad.
Rosina, de su parte, daba por seguro que la frialdad y desdén de
Teófilo eran reales y no contrahechos. Esta convicción, fundiéndose
con las sensaciones depresivas experimentadas durante la noche, le
desolaba el pecho, provocándole deseos de llorar, que acallaba con
una alegría sobrepuesta, ficticia y extremosa. Como quiera que
Artaza gustaba no poco de Rosina y venía persiguiéndola desde
hacía algún tiempo, ella determinó simular que le correspondía con
creces y dar a entender a Teófilo que si él no se cuidaba de ella, ella
se cuidaba menos de él. Y así acogió con muestras de exagerado
contento la proposición de Artaza, y habló, colgándosele con
zalamería del brazo:
—Eres un hombre, Felipín. A la Bombilla, y bailaremos tú y yo,
muy ceñiditos, una polquita de organillo.
En el resto de la pandilla se disimulaban otros antagonismos que
amenazaban estallar por la virtud expansiva del vino. Eran estos
entre Angelón y Travesedo, cortejadores de Verónica, y entre Grajal
y Guzmán, encendidos en deseos por Márgara.
Fueron todos en dos coches a la Bombilla y se apearon en casa
de Juan. Era tarde, y coyuntura muy sazonada para cenar. Pidieron
la cena en un gabinete reservado del entresuelo, que daba al patio.
La comida fue copiosa y suculenta, caudalosamente irrigada por
diferentes clases de vinos. Entre plato y plato salían a veces, por
parejas, a bailar al son del organillo. Los antagonismos ocultos se
exacerbaban con movimiento progresivamente acelerado. El primero
que conflagró fue el de Angelón y Travesedo, que se vinieron a las
manos con iracundo denuedo. Costó Dios y ayuda destrabarlos. Al
final de la lucha, Travesedo había perdido el sentido de la vista, con
la destrucción de sus lentes, y sangraba por las narices; Angelón
tenía un ojo medio pocho y sangraba por una oreja. Entre Grajal,
Artaza, Guzmán y Verónica consiguieron apaciguarlos y hasta que se
dieran las manos, echando pelillos a la mar. Luego, los dos
combatientes, seguidos, por si acaso, de Artaza, Guzmán y Verónica,
subieron a una habitación a mitigar las lesiones, lavarse y componer
los desperfectos del traje. Se fueron tranquilizando, y gracias a los
buenos oficios de Verónica depusieron su ofuscación y solicitaron
dispensa por el escándalo y susto que habían ocasionado. Pasaba el
tiempo y Guzmán, que no las tenía todas consigo a causa de la
pertinaz ausencia de Márgara y Grajal, salió de la estancia y
descendió al gabinete del piso bajo. El gabinete estaba vacío.
Guzmán salió y curioseó en otros gabinetes vecinos. En uno de ellos
encontró a Grajal y Márgara sobre una chaise longue, luchando
jadeantes a brazo partido. Por el desorden de las ropas y otros
indicios, Guzmán vino a entender que algún hecho grave se había
consumado. Grajal se puso en pie, así que vio aparecer a Guzmán,
arregló y colocó en su punto algunas partes de su vestido, se alisó
los cabellos con las manos, y salió del aposento sonriendo y
haciendo guiños a Guzmán. Este cerró la puerta por dentro y fue a
sentarse al lado de Márgara, la cual se dejó caer sobre él, llorando.
Guzmán la estrechó entre sus brazos, le besó la frente, los ojos, la
boca, dura y fresca.
Cuando salieron del gabinete era de día. Al cobijo de una glorieta
de amortiguado verde polvoroso estaban Artaza, Grajal, Angelón,
Travesedo y Verónica, tomando sopas de ajo con huevos. Recibieron
a Guzmán y Márgara con chanzas picantes.
—¿Y Rosina y Teófilo? —preguntó Guzmán, sin darse por
enterado de las malicias.
—Nos la han dado con queso —respondió Angelón.
—Es la zorra más zorra que ha parido madre —decretó Artaza—.
Toda la noche dándome coba y al menor descuido, pum, se las guilla
con el poeta lilial.
—Pero, ¿cuándo ha sido?
—¿Cuándo? Cuando estábamos arriba acabildando a estos
gaznápiros, que tienen la culpa de todo. Se les va el vino en seguida
a la bola —habló Artaza, con enojada mueca—. Vosotros, al fin, no
habéis perdido la noche. Tomad sopas de ajo, o, como dice el poeta
lilial en su drama, tomar sopas de ajo. Recoime con los poetas, que
ni hablar saben. Vamos hijos, meteos por las sopas de ajo, que no
hay nada como eso después de una juerga.
A las siete de la mañana terminaba aquella refección matutinal.
Grajal, Artaza, Angelón, Travesedo y Verónica volvieron juntos en un
coche a Madrid.
En quedándose a solas, Guzmán preguntó a Márgara:
—¿Qué quieres hacer? ¿Te quieres quedar en Madrid o volver a tu
pueblo?
—A mi pueblo en seguida— respondió Márgara.
—En seguida. Dentro de poco sale un tren. Vamos andando, que
la estación está cerca.
Salieron a la carretera y comenzaron a andar hacia la estación del
Norte. Oíase el agrio bramido de cornetas marciales y el tecleteo de
algún miserable piano de manubrio. El sol, a rebalgas sobre los altos
de la Moncloa, ponía un puyazo de lumbre cruel en los enjutos
lomos de la urbe madrileña, de cuyo flanco se vertía como un hilo de
sangre pobre y corrupta el río Manzanares. Un tren silbó. En el
andén de la estación estaban sor Cruz y sor Sacramento.
—Esas monjitas son amigas mías. ¿Quieres hacer el viaje con
ellas? —dijo Alberto.
—¿Adónde? —inquirió Márgara, con ojos ariscos.
—Ellas van a Pilares.
—Bueno.
—Toma este dinero.
—No lo necesito.
—Sí; lo necesitas para comer en el viaje.
Márgara lo aceptó sin dar las gracias.
Sor Cruz y sor Sacramento recibieron a Márgara con franca
afabilidad. Alberto ayudó a las tres mujeres a acomodarse en un
departamento de tercera y aguardó hasta que el tren partiera.
Dos meses después, Antonia recibía una carta de su amiga sor
Sacramento, en la cual había un párrafo que rezaba: «Dile al señor
de Guzmán que aquella muchacha que nos recomendó en el tren se
vino con nosotras directamente al convento, como recogida. Dentro
de muy poco profesará. Su piedad es ejemplar, y en esta casa la
consideramos como un ángel más que como una mujer.»
PA RT E V
ORMUZD y AHRIMÁN

Οἵη περ φύλλων γενεὴ τοίη δὲ καὶ ἀνδρῶν.


Homero.

—Largo de ahí, glotona, egoísta, que todo te lo comes tú —


Verónica palmoteó por ahuyentar una gallina extraordinariamente
corpulenta y voraz que entre una muchedumbre de otras aves de
corral, a quienes Verónica en aquellos momentos cebaba
arrojándoles puñados de maíz, ejercitaba escandalosa hegemonía, y
cuándo por el terror y en fuerza de picotazos, cuándo por diligencia,
se embuchaba la mayor parte de la comida.
Era el paraje mezcla de patio y de jardín, a espaldas de una
casuca de fisonomía aldeana, con corredor en el único piso que
sobre el entresuelo tenía. Entre los barrotes del corredor enredábase
un viejo parral sin fruto, a cuya sombra y en mangas de camisa
Alberto escribía. Cerraban el huertecillo de una parte la casuca, de
otras dos, perpendiculares a ella, sendos muros, no muy altos,
medianeros con los huertos de las casas vecinas, y completando el
rectángulo, una verja de hierro pintado de verde claro, que caía
sobre el mar, porque casa y huerto estaban asentados en peña viva
del acantilado de la costa, como todas las casas del pueblo, llamado
Celorio. Desde el huerto se salía al mar por una escalerilla de piedra,
adonde podían atracar lanchas estando alta la marea, y estando baja
proporcionaba excelente baño para quienes no supieran nadar.
Prosiguió Verónica:
—Esta mal educada de doña Baldomera no deja vivir a las demás,
como si no fueran hijas de Dios. Se están quedando en los huesos y
se me van a morir tísicas. Yo creo que lo mejor es venderla.
—O comérnosla.
—Eso no. ¿Tendrías valor para comerte ese animalito que primero
has visto vivo? A todo esto no te dejo trabajar; perdona, hijo, y
continúa con tus papelorios. Procuraré estarme callada, y eso que, al
menos para mí, es punto menos que imposible hacer un nudo en la
lengua. Mira que he cambiado desde que tú me has conocido hasta
ahora: en todo, menos en hablar por los codos. Bueno, he dicho.
Alberto se aplicó a corregir las pruebas de la primera parte de una
novela que estaba escribiendo. Verónica, encarnando
momentáneamente la personalidad de la diosa Temis, se esforzaba
en poner algún orden en aquel pequeño mundo gallináceo que ella
regía, y en distribuir bienes y satisfacer necesidades conforme a las
puras normas de la justicia distributiva. Hastiose muy pronto de
asumir tan alta misión y vino a donde Alberto escribía.
—Por hoy tienes que aguantarme y mandar al cuerno el trabajo.
Quiero hablar contigo y no tengo asadura para que se me pudran
dentro del cuerpo ciertas cosillas que me andan escarbando hace ya
muchos días.
—Veamos qué es lo que te escarba. Renuncio a trabajar y te
escucho.
—No, aquí no. Esos tienen cerradas las maderas, pero a lo mejor
están despiertos ya y nos oyen. Vamos de paseo hasta el Cabo de la
Muerte; por las peñas, si te parece, y de paso cogemos cangrejos,
lapas y bígaros. Y eso que lo que te voy a decir es muy serio y no
tendré humor para tales pequeñeces.
—Andando.
Salieron a la calle, llegaron hasta la iglesia, que era el último
edificio del pueblo, y siguieron en despoblado, orillando el mar por
encima de quebrados peñascos brunos.
—¿A ti no te parece que Rosina está enamorada de Fernando? —
habló Verónica, mirando al suelo como si buscase lugar seguro
donde colocar la planta.
—Sin duda.
—A pesar de que ella dice que lo aborrece. ¿Qué dices?
—Ya te he dicho que para mí está enamorada de Fernando.
—Entonces, ¿por qué engaña a este pobre Teófilo? Habla, di algo,
hombre.
—Engañar... Explícate mejor.
—Que Teófilo no le importa un comino, que se ríe de él, que lo
tiene como un pito para entretenerse y burlarse, que todas las
zalemas y mimos que le hace son fingidos, que es una mala mujer.
—No te acalores.
—No lo puedo remediar. Dime qué piensas tú, si es que te
merezco confianza.
—Creo que te equivocas.
—¿Que me equivoco? ¿Pretendes darme a entender que Rosina
quiere a Teófilo?
—Tal creo.
—¿Y al otro también?
—También. De distinta manera.
—¿Estás de guasa? ¿Qué, se puede querer a dos personas a un
tiempo: lo que se dice querer? Vamos. No sabes lo que te dices. Se
quiere a una, a una sola. Y si dices lo contrario es porque no sabes
lo que es cariño. ¿Qué digo a un tiempo? En toda la vida, me oyes,
en toda la vida no se quiere sino a una sola persona. Y hasta
sospecho que la mayor parte de la gente no quiere a ninguna.
Se sentaron en la coyuntura de un alto peñascal, poblada de
sombra húmeda, verdiclara y sonora. Alberto miró atentamente a
Verónica y dijo:
—¿Es eso todo lo que tenías que decirme?
—¿Por qué me miras así, Alberto? ¿Qué es lo que te figuras?
—En último término son cosas de ellos y a los demás ni nos va ni
nos viene.
—Tú no puedes sentir eso que dices. Teófilo es tu amigo. En
ocasiones me parecéis hermanos. ¿Crees que Teófilo es feliz?
—Teófilo no puede ser nunca feliz.
—Calla, calla.
—Y ahora está siendo todo lo feliz que puede ser.
—No sabes lo que dices, ¿me oyes? Con todos tus libros y tu
ciencia, yo, una mujer ignorante, te digo que no sabes lo que dices.
Además, ¿no te has dado cuenta de que esa mujer está matando a
Teófilo? ¿No ves que está enfermo, aun cuando él no lo note o lo
disimule, y que empeora día por día?
—Sí. Por eso digo que es todo lo feliz que puede ser.
—¿Te has vuelto loco?
Tomaron la vuelta de la casa en silencio.
II

No bien hubieron reanudado sus relaciones, después de aquella


juerga en la Bombilla, Teófilo había dicho a Rosina:
—Antes de continuar adelante es preciso que sepamos lo que
vamos a hacer. Separarme de ti me costaría la vida, estoy seguro;
pero no vacilo en renunciar a la vida antes que doblegarme a ser
amante tuyo a medias. De la primera vez a ahora las circunstancias
han cambiado. Tengo dinero; podremos vivir de mi trabajo.
¿Renuncias a todo, a todo y a todos por mí? De lo contrario te juro
que no volverás a verme, costare lo que costare.
Rosina se había resistido a dar una respuesta categórica,
evadiéndose por la puerta falsa de las zalamerías y ambiguas frases
apasionadas que a nada comprometían; pero Teófilo se había
mantenido en la cuestión concreta, y a la postre ella hubo de
prometer cuanto él quiso, aunque sin ningún ánimo de cumplirlo y
solo por el placer de guardar prisionero aquel peregrino amador el
mayor tiempo posible.
Rosina, con esa fecunda aptitud femenina para la ficción, que a
veces llega a convertirse en autosugestión, había presentado a
Teófilo como empresa punto menos que irrealizable la ruptura con
Fernando. «Odio a Fernando —aseguraba Rosina, justificando ante
su conciencia la magnitud de esta falsedad con el gozo
resplandeciente que a Teófilo causaba el oírla—, lo odio porque es
un tirano y un explotador. De aquí vienen todas las dificultades para
romper de sopetón con él, porque él ha sido siempre quien arregló y
firmó mis contratos, quien cobró mis nóminas y quien administró mi
dinero. Cuanto he ganado en el último invierno, que no es poco,
está a nombre de él. Si yo ahora le dijese, se acabó todo, no te
quepa duda que se quedaba, y tan fresco, con todas mis
ganancias.» A esto Teófilo había respondido que más valía acabar
cuanto antes, aun cuando Fernando defraudase malamente aquel
dinero. Pero Rosina lloriqueaba, calificando de cruel a Teófilo que se
emperraba en que ella había de mandar a paseo lo que tan
honradamente había ganado. «Y sobre todo —añadió— que ese
capitalito, más que mío, es de mi niña, y a eso nada tienes que
decir.» En efecto, Teófilo nada tuvo que decir a esto.
A principios de junio, Rosina retornó a París, con propósitos, a lo
que Teófilo creía, de arreglar sus asuntos con Fernando, darle la
licencia absoluta y volver a los brazos del poeta para no salir ya
nunca de ellos. Volvió al cabo de un mes, como había prometido, y
en extremo desolada, porque Fernando se había negado a darle
cuentas del dinero, y, por lo que atañe a la ruptura, había jurado
matarla el día que le abandonase. «Ten paciencia, Teófilo —había
suplicado Rosina—. Lo mejor es que vayamos a pasar el verano en
mi tierra, junto al mar. Que corra el tiempo, y allí, con toda calma,
resolveremos lo que convenga hacer.»
Cuanto Rosina había referido acerca de su estancia en París y sus
tentativas de ruptura con Fernando era una fábula. Habían vivido,
como siempre, unos días de ardorosa pasión, mutuamente
participada. Luego, Rosina habíale insinuado a Fernando que
deseaba pasar el verano en Asturias, con la niña, a lo cual Fernando
accedió, si bien él no podía acompañarla (cosa que de antemano
sabía Rosina), por tener varios contratos sucesivos en las playas del
Norte de Francia.
Como Fernando estaba enamorado de veras y era algo celoso,
Rosina temía que por sorpresa se presentase en Asturias. Solo de
pensar en semejante contingencia se empavorecía. Pero, muy
precavida y avispada, acudió en un instante con el remedio, y fue
llevarse a Verónica consigo, de manera que si Fernando surgía de
improviso, Teófilo pasase por amante de la bailarina. Llamó, pues, a
Verónica, y por medio de hábiles circunloquios le descubrió su
intención. Verónica no respondió por el pronto, sino que quiso antes
aconsejarse de Alberto, en cuyo afecto y discreción fiaba.
—Chiquillo, estoy como si me hubieran dado un mamporro en la
nuca —dijo Verónica a Guzmán, y a seguida refirió su entrevista con
Rosina. Añadió—: Por estas que me costó mucho trabajo
contenerme en un principio. Mira tú que es desfachatez proponerme
a mí que vaya, así, sin más ni más, a tenerles la vela un santo
verano. Pero luego lo pensé mejor, y me dije: ¿Por qué no? Figúrate
que viene el tal Fernandito y los encuentra solos; nada, que se carga
a Teófilo, no te quepa duda. No lo quiero ni pensar. Pero niño, yo
sola no voy: es mucho gorro para mí sola. Pues se me ha ocurrido lo
siguiente: que te vengas tú con nosotros, y somos cuatro. No, no
me digas que no, porque si no vienes de tu motu propio te arrastro
por las orejas.
—¿Qué pretendes? ¡Con claridad! ¿Diente por diente y gorro por
gorro? ¿Ellos nos lo ponen y nosotros se lo ponemos?
—A ver si te doy una guantada. ¿Lo dices en serio? Yo creí que
me mirabas solo como una amiga, más que como una amiga, como
un amigo. Ya sabes que me he cortado la coleta, y contigo menos
que con ninguno. De manera que si quieres ayudarme a aguantar el
gorro, con la condición expresa, ¿te enteras?, de que no me has de
decir ni una palabra de aquello, por ningún concepto, ni una
palabra; en este caso, digo, me acompañas. Si no, te puedes ir al
guano, y buen desengaño me llevo, que siempre te tuve por un
buen amigo.
—Arreglado. Te acompañaré, Verónica, y respetaré tu poda
capilar. Yo he sido siempre muy respetuoso con todos los
tonsurados.
—Entonces, ¿qué? ¿La condición no es de tu gusto? ¿No quieres
venir?
—Te he dicho que sí, Verónica.
—Es que como te habías disparado con esas chanfainas tuyas que
ni el diablo las entiende...
—Aludía a que te habías cortado la coleta, acto que yo respeto.
—Eres un barbián. Choca acá esos cinco.
—Y tú eres la mujer más salada y encantadora que he conocido.
Ahí van los cinco.
Cuando Travesedo, por boca de Guzmán, se informó del
proyectado viaje, permaneció unos minutos perplejo, y, en
recobrándose, aborrascó las cejas, se mesó las barbas con mal
reprimido despecho, y procurando emitir una voz patética, adusta y
recriminatoria, dijo:
—Nunca lo hubiera creído de ti. Te consideraba amigo leal. No
puedes escudarte en la ignorancia de mi afecto y más que afecto por
Verónica, porque en hartas ocasiones hemos hablado acerca del
asunto.
Guzmán explicó la condición que Verónica le había impuesto, a la
cual él se había sometido gustoso.
—Entonces —repuso Travesedo—, ¿por qué no ha venido
Verónica a solicitarme a mí? Yo me hubiera sometido también.
—¿Por qué? Por eso precisamente, creo yo. Porque tú piensas que
te someterías, lo piensas ahora, pero más tarde... siempre al lado de
ella... ¿No dices que te gusta demasiado? Ya sabes, se ha cortado la
coleta; y cuando una mujer se corta la coleta no sé que vendan en
ninguna parte el petróleo Gal que la haga renacer.
—Quizás solo en la Vicaría —concluyó Travesedo, después de
pensarlo un rato.
III

Para cualquier observador superficial la casuca de Celorio, en


donde moraban Rosina, Verónica, Teófilo y Guzmán, era la casa del
presente; esto es, la casa de la dicha, ya que es opinión casi
unánimemente recibida que la felicidad no es fantasma de esperanza
o recuerdo, afán de lo porvenir o fruición de lo fenecido, sino goce
del instante actual, en cierta manera eterno, porque en él se
absorben las nociones de pasado y futuro; en suma, el carpe diem
horaciano. Los cuatro moradores de la casuca se ingeniaban como
podían en extraer a los días sucesivos la mayor cantidad posible de
sustancia de presente. Verónica y Guzmán, por la virtud de cierto
matiz de su carácter, que pudiera denominarse clásico, vivían casi
siempre y sin esfuerzo abandonados al presente; carecían de
ambiciones y, por lo tanto, sus deseos, más que deseos, eran
tendencias o mansas energías enderezadas a un fin y reforzadas por
un sentimiento latente a modo de sorda certidumbre de que habían
de realizarse. Por el contrario, para Rosina y Teófilo la concentración
en el presente era propósito de la voluntad, ceguera preconcebida y
miedo del mañana misterioso. Aquéllos no temían perder nada;
estos sufrían la zozobra de perderlo todo, o, por mejor decir, en el
hondón más íntimo del espíritu mantenían amordazada la conciencia
de ser efímera y engañosa aquella felicidad que se hacían la ilusión
de estar gozando. De ahí que en la alegría de Rosina y Teófilo
hubiera en todo punto algo de estridente y acre.
Pero lo cierto es que la casuca de Celorio estaba saturada de
continuo de chácharas, risas y cánticos.
Teófilo había venido al pueblo con la determinación de aprovechar
el verano para cargarse otro drama, como él decía. Pasaba el
tiempo, sin embargo, y Teófilo no hacía nada. La sequedad de sus
facultades creadoras y el torpor de su estro tan ágil y desenfadado
en otro tiempo, eran alarmantes y le traían acongojado. Confiose a
Alberto, rogándole que le proporcionase algún remedio.
—No sé cómo te arreglas —habló Teófilo—. Trabajas todos los
días cinco o seis horas con regularidad, tú que siempre has sido tan
vago. No veo que pongas especial ahinco, sino que parece que
escribes por distraer el tiempo; pero tu obra cunde
maravillosamente. Dime, ¿qué debo hacer yo?
—Yo qué sé, Teófilo. La mayor parte de las cosas en la vida son
independientes del albedrío humano. Me pides consejos... Soy
enemigo de las frases genéricas y vanas. ¿Qué quieres que te
aconseje? Que te adoctrines en la simplicidad de la naturaleza... Que
escuches el rumor de árboles y ondas hablándose entre sí, sin
decirse retruécanos, como hacemos los hombres... Es todo lo que
puedo decirte, y esto como ves, no tiene ningún valor. Aguarda. Si
ahora te sientes incapaz para urdir un argumento o hilvanar cuatro
versos, piensa que esa esterilidad es pasajera, y que a todos los
artistas les ocurre lo propio a temporadas. Aguarda. En medio de
todo no es raro que te sientas inútil para el arte, cuando el amor te
tiene acaparado por completo.
—Así es. Acaparado por completo —repitió Teófilo, esbozando una
sonrisa de candoroso orgullo—. Se cree vulgarmente que el amor
estimula el ejercicio de las artes, y muy particularmente el de la
poesía. Ahora veo que no. Al contrario, le anula a uno. Pero es un
anulamiento tan placentero... ¿Que ahora no puedo escribir? No
importa; aguardaré. Tienes razón. La vida es anterior y superior al
arte. Yo ahora vivo.
—Sí; vivir es sentir la vida, es tener sensaciones fuertes, como
dice Stendhal.
—Me gusta la cita. Se me figura como si toda mi vida anterior no
hubiera sido sino preparación espiritual para sentir en toda su
magnitud las sensaciones presentes. Tener sensaciones fuertes...
eso es todo, sí, señor. Pero para resistir las sensaciones fuertes no
vendría mal tener un cuerpo fuerte, robusto. ¿No crees que me
estoy desmejorando bastante? —Teófilo pretendió en balde sonreir.
Sus ojos traicionaban escondido anhelo.

You might also like