散点图 x 轴刻度标签未显示

Posted

技术标签:

【中文标题】散点图 x 轴刻度标签未显示【英文标题】:Scatter plot x-axis tick labels not showing up 【发布时间】:2021-06-01 07:28:10 【问题描述】:

这是我的代码:

import pandas as pd
import matplotlib.pyplot as plt

wine = pd.read_csv('red wine quality.csv')

wine = wine.dropna()

plt.figure()
wine.plot.scatter(x = 'pH', y = 'alcohol', c = 'quality', alpha = 0.4,\
                  cmap = plt.get_cmap('jet'), colorbar = True)
plt.savefig('scatter plot.png')
plt.tight_layout()
plt.show()

这是我得到的情节:

我得到一个散点图,y 轴标记为“酒精”,范围为 9-15,颜色条标记为“质量”,范围为 3-8。我以为我在代码中指定了 x 轴将显示为“pH”,但我什么也没得到。我尝试将我的 figsize 调整为 [8, 8],将 dpi 设置为 100,并标记轴,但没有任何东西可以显示 x 轴。我做错了什么?

这是一个可以玩的 MCVE:

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt

df = pd.DataFrame(np.random.randn(50, 4), columns=['A', 'B', 'C', 'D'])

plt.figure()
df.plot.scatter(x = 'A', y = 'B', c = 'C', alpha = 0.4,\
                  cmap = plt.get_cmap('jet'), colorbar = True)
plt.tight_layout()
plt.show()

【问题讨论】:

请发布 MCVE。一个随机生成的 DF sn-p 就可以了 您的问题无法重现。但是您应该省略 plt.figure() 以避免创建空图。最好将绘图创建为fig, ax = plt.subplots() 并使用wine.plot.scatter(...., ax=ax)。你是在 Jupyter 笔记本中运行它吗?你试过savefig(..., bbox_inches='tight)吗? 我可以在 Spyder 中重现此问题,但特别是使用 ax=ax 可以解决此问题。 @JohanC 已经发布了。添加fig, ax = plt.subplots(),然后将ax=ax 添加到您的scatter 呼叫中。并摆脱plt.figure() 我更仔细地阅读了这两个 cmets,并且能够使用您推荐的方法显示 x 轴刻度标签。起初,我的婴儿 coder 眼睛没有看到你放下的东西,但我现在明白了。非常感谢! 【参考方案1】:

Pandas 散点图上未显示 X 轴标签和次要刻度标签是 Pandas 的一个已知且未解决的问题(请参阅 BUG: Scatterplot x-axis label disappears with colorscale when using matplotlib backend · Issue #36064)。

此错误发生在 Jupyter 笔记本显示 Pandas 散点图时,该散点图具有颜色图,同时使用 Matplotlib 作为绘图后端。最简单的解决方法是将 sharex=False 传递给 pandas.DataFrame.plot.scatter。

见Make pandas plot() show xlabel and xvalues

【讨论】:

以上是关于散点图 x 轴刻度标签未显示的主要内容,如果未能解决你的问题,请参考以下文章

R语言ggplot2可视化时间序列散点图X轴和Y轴都是时间信息使用labels参数在scale_y_datetime函数中自定义指定Y轴时间信息轴标签刻度显示的格式

python:散点图对数刻度

excel散点图批量添加系列

请教一个问题:excel画散点图,怎么把x轴y轴的位置换到上方和右边啊?

excel散点图 y轴对应有3组数据 画图的时候只弄出来一组 怎么加另2 组啊

如何将时间用作带有seaborn的散点图的x轴?