We are currently solving the following issue within our repository. Here is the issue text:
--- BEGIN ISSUE ---
Fix second image in KElbowVisualizer documentation
The second image that was added to the `KElbowVisualizer` documentation in PR #635 is not rendering correctly because the `elbow_is_behind.png` file is not generated by the `elbow.py` file, but was added separately.

- [x] Expand `KElbowVisualizer` documentation in `elbow.rst`
- [x] Add example showing how to hide timing and use `calinski_harabaz` scoring metric
- [x] Update `elbow.py` to generate new image for the documentation.




--- END ISSUE ---

Below are some code segments, each from a relevant file. One or more of these files may contain bugs.
--- BEGIN FILES ---
Path: `docs/api/cluster/elbow.py`
Content:
```
1 # Clustering Evaluation Imports
2 from functools import partial
3 
4 from sklearn.cluster import MiniBatchKMeans
5 from sklearn.datasets import make_blobs as sk_make_blobs
6 
7 from yellowbrick.cluster import KElbowVisualizer
8 
9 # Helpers for easy dataset creation
10 N_SAMPLES = 1000
11 N_FEATURES = 12
12 SHUFFLE = True
13 
14 # Make blobs partial
15 make_blobs = partial(sk_make_blobs, n_samples=N_SAMPLES, n_features=N_FEATURES, shuffle=SHUFFLE)
16 
17 
18 if __name__ == '__main__':
19     # Make 8 blobs dataset
20     X, y = make_blobs(centers=8)
21 
22     # Instantiate the clustering model and visualizer
23     # Instantiate the clustering model and visualizer
24     visualizer = KElbowVisualizer(MiniBatchKMeans(), k=(4,12))
25 
26     visualizer.fit(X) # Fit the training data to the visualizer
27     visualizer.poof(outpath="images/elbow.png") # Draw/show/poof the data
28
```
--- END FILES ---

Please first localize the bug based on the issue statement, and then generate a patch according to the `git diff` format fenced by three backticks.

Here is an example:

```diff
diff --git a/examples/server_async.py b/examples/server_async.py
--- a/examples/server_async.py
+++ b/examples/server_async.py
@@ -313,4 +313,4 @@
 
 
 if __name__ == "__main__":
-    asyncio.run(run_async_server("."), debug=True)
+    asyncio.run(run_async_server(), debug=True)
diff --git a/examples/server_sync.py b/examples/server_sync.py
--- a/examples/server_sync.py
+++ b/examples/server_sync.py
@@ -313,5 +313,5 @@
 
 
 if __name__ == "__main__":
-    server = run_sync_server(".")
+    server = run_sync_server()
     server.shutdown()

```

diff --git a/docs/api/cluster/elbow.py b/docs/api/cluster/elbow.py
--- a/docs/api/cluster/elbow.py
+++ b/docs/api/cluster/elbow.py
@@ -1,27 +1,55 @@
-# Clustering Evaluation Imports
-from functools import partial
+#!/usr/bin/env python
 
-from sklearn.cluster import MiniBatchKMeans
-from sklearn.datasets import make_blobs as sk_make_blobs
+"""
+Generate images for the elbow plot documentation.
+"""
 
-from yellowbrick.cluster import KElbowVisualizer
+# Import necessary modules
+import matplotlib.pyplot as plt
 
-# Helpers for easy dataset creation
-N_SAMPLES = 1000
-N_FEATURES = 12
-SHUFFLE = True
+from sklearn.cluster import KMeans
+from sklearn.datasets import make_blobs
+from yellowbrick.cluster import KElbowVisualizer
 
-# Make blobs partial
-make_blobs = partial(sk_make_blobs, n_samples=N_SAMPLES, n_features=N_FEATURES, shuffle=SHUFFLE)
 
+def draw_elbow(path="images/elbow.png"):
+    # Generate synthetic dataset with 8 blobs
+    X, y = make_blobs(
+        centers=8, n_features=12, n_samples=1000,
+        shuffle=True, random_state=42
+    )
 
-if __name__ == '__main__':
-    # Make 8 blobs dataset
-    X, y = make_blobs(centers=8)
+    # Create a new figure to draw the clustering visualizer on
+    _, ax = plt.subplots()
 
     # Instantiate the clustering model and visualizer
+    model = KMeans()
+    visualizer = KElbowVisualizer(model, ax=ax, k=(4,12))
+
+    visualizer.fit(X)                # Fit the data to the visualizer
+    visualizer.poof(outpath=path)    # Draw/show/poof the data
+
+
+def draw_calinski_harabaz(path="images/calinski_harabaz.png"):
+    # Generate synthetic dataset with 8 blobs
+    X, y = make_blobs(
+        centers=8, n_features=12, n_samples=1000,
+        shuffle=True, random_state=42
+    )
+
+    # Create a new figure to draw the clustering visualizer on
+    _, ax = plt.subplots()
+
     # Instantiate the clustering model and visualizer
-    visualizer = KElbowVisualizer(MiniBatchKMeans(), k=(4,12))
+    model = KMeans()
+    visualizer = KElbowVisualizer(
+        model, ax=ax, k=(4,12),
+        metric='calinski_harabaz', timings=False
+    )
+    visualizer.fit(X)                # Fit the data to the visualizer
+    visualizer.poof(outpath=path)    # Draw/show/poof the data
 
-    visualizer.fit(X) # Fit the training data to the visualizer
-    visualizer.poof(outpath="images/elbow.png") # Draw/show/poof the data
+
+if __name__ == '__main__':
+    draw_elbow()
+    draw_calinski_harabaz()

{"golden_diff": "diff --git a/docs/api/cluster/elbow.py b/docs/api/cluster/elbow.py\n--- a/docs/api/cluster/elbow.py\n+++ b/docs/api/cluster/elbow.py\n@@ -1,27 +1,55 @@\n-# Clustering Evaluation Imports\n-from functools import partial\n+#!/usr/bin/env python\n \n-from sklearn.cluster import MiniBatchKMeans\n-from sklearn.datasets import make_blobs as sk_make_blobs\n+\"\"\"\n+Generate images for the elbow plot documentation.\n+\"\"\"\n \n-from yellowbrick.cluster import KElbowVisualizer\n+# Import necessary modules\n+import matplotlib.pyplot as plt\n \n-# Helpers for easy dataset creation\n-N_SAMPLES = 1000\n-N_FEATURES = 12\n-SHUFFLE = True\n+from sklearn.cluster import KMeans\n+from sklearn.datasets import make_blobs\n+from yellowbrick.cluster import KElbowVisualizer\n \n-# Make blobs partial\n-make_blobs = partial(sk_make_blobs, n_samples=N_SAMPLES, n_features=N_FEATURES, shuffle=SHUFFLE)\n \n+def draw_elbow(path=\"images/elbow.png\"):\n+    # Generate synthetic dataset with 8 blobs\n+    X, y = make_blobs(\n+        centers=8, n_features=12, n_samples=1000,\n+        shuffle=True, random_state=42\n+    )\n \n-if __name__ == '__main__':\n-    # Make 8 blobs dataset\n-    X, y = make_blobs(centers=8)\n+    # Create a new figure to draw the clustering visualizer on\n+    _, ax = plt.subplots()\n \n     # Instantiate the clustering model and visualizer\n+    model = KMeans()\n+    visualizer = KElbowVisualizer(model, ax=ax, k=(4,12))\n+\n+    visualizer.fit(X)                # Fit the data to the visualizer\n+    visualizer.poof(outpath=path)    # Draw/show/poof the data\n+\n+\n+def draw_calinski_harabaz(path=\"images/calinski_harabaz.png\"):\n+    # Generate synthetic dataset with 8 blobs\n+    X, y = make_blobs(\n+        centers=8, n_features=12, n_samples=1000,\n+        shuffle=True, random_state=42\n+    )\n+\n+    # Create a new figure to draw the clustering visualizer on\n+    _, ax = plt.subplots()\n+\n     # Instantiate the clustering model and visualizer\n-    visualizer = KElbowVisualizer(MiniBatchKMeans(), k=(4,12))\n+    model = KMeans()\n+    visualizer = KElbowVisualizer(\n+        model, ax=ax, k=(4,12),\n+        metric='calinski_harabaz', timings=False\n+    )\n+    visualizer.fit(X)                # Fit the data to the visualizer\n+    visualizer.poof(outpath=path)    # Draw/show/poof the data\n \n-    visualizer.fit(X) # Fit the training data to the visualizer\n-    visualizer.poof(outpath=\"images/elbow.png\") # Draw/show/poof the data\n+\n+if __name__ == '__main__':\n+    draw_elbow()\n+    draw_calinski_harabaz()\n", "issue": "Fix second image in KElbowVisualizer documentation\nThe second image that was added to the `KElbowVisualizer` documentation in PR #635 is not rendering correctly because the `elbow_is_behind.png` file is not generated by the `elbow.py` file, but was added separately.\r\n\r\n- [x] Expand `KElbowVisualizer` documentation in `elbow.rst`\r\n- [x] Add example showing how to hide timing and use `calinski_harabaz` scoring metric\r\n- [x] Update `elbow.py` to generate new image for the documentation.\r\n\r\n\r\n\n", "before_files": [{"content": "# Clustering Evaluation Imports\nfrom functools import partial\n\nfrom sklearn.cluster import MiniBatchKMeans\nfrom sklearn.datasets import make_blobs as sk_make_blobs\n\nfrom yellowbrick.cluster import KElbowVisualizer\n\n# Helpers for easy dataset creation\nN_SAMPLES = 1000\nN_FEATURES = 12\nSHUFFLE = True\n\n# Make blobs partial\nmake_blobs = partial(sk_make_blobs, n_samples=N_SAMPLES, n_features=N_FEATURES, shuffle=SHUFFLE)\n\n\nif __name__ == '__main__':\n    # Make 8 blobs dataset\n    X, y = make_blobs(centers=8)\n\n    # Instantiate the clustering model and visualizer\n    # Instantiate the clustering model and visualizer\n    visualizer = KElbowVisualizer(MiniBatchKMeans(), k=(4,12))\n\n    visualizer.fit(X) # Fit the training data to the visualizer\n    visualizer.poof(outpath=\"images/elbow.png\") # Draw/show/poof the data\n", "path": "docs/api/cluster/elbow.py"}], "after_files": [{"content": "#!/usr/bin/env python\n\n\"\"\"\nGenerate images for the elbow plot documentation.\n\"\"\"\n\n# Import necessary modules\nimport matplotlib.pyplot as plt\n\nfrom sklearn.cluster import KMeans\nfrom sklearn.datasets import make_blobs\nfrom yellowbrick.cluster import KElbowVisualizer\n\n\ndef draw_elbow(path=\"images/elbow.png\"):\n    # Generate synthetic dataset with 8 blobs\n    X, y = make_blobs(\n        centers=8, n_features=12, n_samples=1000,\n        shuffle=True, random_state=42\n    )\n\n    # Create a new figure to draw the clustering visualizer on\n    _, ax = plt.subplots()\n\n    # Instantiate the clustering model and visualizer\n    model = KMeans()\n    visualizer = KElbowVisualizer(model, ax=ax, k=(4,12))\n\n    visualizer.fit(X)                # Fit the data to the visualizer\n    visualizer.poof(outpath=path)    # Draw/show/poof the data\n\n\ndef draw_calinski_harabaz(path=\"images/calinski_harabaz.png\"):\n    # Generate synthetic dataset with 8 blobs\n    X, y = make_blobs(\n        centers=8, n_features=12, n_samples=1000,\n        shuffle=True, random_state=42\n    )\n\n    # Create a new figure to draw the clustering visualizer on\n    _, ax = plt.subplots()\n\n    # Instantiate the clustering model and visualizer\n    model = KMeans()\n    visualizer = KElbowVisualizer(\n        model, ax=ax, k=(4,12),\n        metric='calinski_harabaz', timings=False\n    )\n    visualizer.fit(X)                # Fit the data to the visualizer\n    visualizer.poof(outpath=path)    # Draw/show/poof the data\n\n\nif __name__ == '__main__':\n    draw_elbow()\n    draw_calinski_harabaz()\n", "path": "docs/api/cluster/elbow.py"}]}