我想创建一个散点图,用整数总结我的数据。由于散点图不能将间隔类型作为轴参数,因此我将值转换为字符串,但这会丢失间隔的顺序,请参见下面的x轴没有从低到高的顺序。 我怎样才能维持秩序
import pandas as pd
import matplotlib.pyplot as plt
import matplotlib.colors
import numpy as np
n_tile = 5
np.random.seed(0)
x = np.random.normal(150, 70, 3000,)
y = np.random.normal(1, 0.3, 3000)
r = np.random.normal(0.4, 0.1, 3000)
plot_data = pd.DataFrame({
'x': x,
'y': y,
'r': r
})
plot_data['x_group'] = pd.qcut(plot_data['x'], n_tile, duplicates='drop')
plot_data['y_group'] = pd.qcut(plot_data['y'], n_tile, duplicates='drop')
plot_data_grouped = plot_data.groupby(['x_group','y_group'], as_index=False).agg({'r':['mean','count']})
plot_data_grouped.columns = ['x','y','mean','count']
cmap = plt.cm.rainbow
norm = matplotlib.colors.Normalize(vmin=0, vmax=1)
plt.figure(figsize=(10,10))
plt.scatter(x=[str(x) for x in plot_data_grouped['x']],
y=[str(x) for x in plot_data_grouped['y']],
s=plot_data_grouped["count"],
c=plot_data_grouped['mean'], cmap="RdYlGn", edgecolors="black")
plt.show()
有时,最好升级当前的开发包。因为您的
virtual-env
安装了本地matplotlib
。寻源激活后,升级matplotlib
为此,请使用管理权限打开
terminal
或command prompt
,并尝试使用以下命令升级版本pip
和matplotlib
:python -m pip install upgrade pip
python -m pip install upgrade matplotlib
另一方面,使用
matplotlib
,您可以获取或设置任一轴的当前标记位置和标签(即x-axis
或y-axis
)我给你一个非常简单的例子,你的给定数据沿着两个轴以顺序绘制。要保留沿
axes
的顺序,只需使用:您可以使用此技术解决升级
matplotlib
和不升级matplotlib
时的问题。特别是对于指定的matplotlib==2.1.1
版本下面是这个简单示例的输出。您可以看到沿着
x-axis
和y-axis
的值。给定图的目的只是指定values
以及axes
:对于您给定的代码,我已将您的一些代码更新如下:
现在您可以看到输出符合要求:
这里有两种解决方案。更简单(也是更好的解决方案)的方法是简单地将matplotlib升级到新版本
如果这不是一个选项,首选的替代方案是分别处理散点打印和勾号标记,这可以非常简单地完成。例如:
相关问题 更多 >
编程相关推荐