如何解决,相同代码在pycharm中画图显示不出,但是在jupyter却能完美显示的问题
如何解决,相同代码在pycharm中画图显示不出,但是在jupyter却能完美显示的问题发不了图,但是情况是题目这样 没有漏掉任何东西 用的那个模块画图啊?
小声逼逼一句,大半夜还在学python,真牛逼啊 狗宁 发表于 2020-11-19 08:51
用的那个模块画图啊?
小声逼逼一句,大半夜还在学python,真牛逼啊
用的matplotlib画的雷达图
import matplotlib.pyplot as plt
import numpy as np
def plot(kmeans_model=None, columns=None):
'''
此函数用户绘制客户分群结果的雷达图
:param kmeans_model: 聚类的结果
:param columns: 各特征的名字
:return: 客户分群的雷达图
'''
plt.figure(figsize=(11, 11))
# 中文和负号的正常显示
plt.rcParams['font.sans-serif'] = 'SimHei'
plt.rcParams['axes.unicode_minus'] = False
plt.style.use('ggplot')# 使用ggplot的绘图风格
N = len(columns) # 特征数
angles = np.linspace(0, 2 * np.pi, N, endpoint=False)# 设置雷达图的角度,用于平分切开一个圆面
angles = np.concatenate((angles, ])) # 为了使雷达图一圈封闭起来
'''
绘图
'''
feature = columns # 特征名称
fig = plt.figure()
ax = fig.add_subplot(1,1,1, polar=True) # 这里一定要设置为极坐标格式
ax.set_thetagrids(angles * 180 / np.pi, feature)# 添加每个特征的标签
ax.set_ylim(kmeans_model.cluster_centers_.min(), kmeans_model.cluster_centers_.max())# 设置雷达图的范围
plt.title('客户群特征分布图') # 添加标题
ax.grid(True) # 添加网格线
sam = ['r-', 'o-', 'g-', 'b-', 'p-']# 样式
lab = []
for i in range(len(kmeans_model.cluster_centers_)):# 依次绘制每个类中心的图像
values = kmeans_model.cluster_centers_
values = np.concatenate((values, ])) # 为了使雷达图一圈封闭起来,需要下面的步骤
ax.plot(angles, values, sam, linewidth=2) # 绘制折线图
ax.fill(angles, values, alpha=0.25) # 填充颜色
lab.append('客户群' + str(i))
plt.legend(lab)
plt.show()# 显示图形
大半夜还在写 是因为复习一下项目 毕业得找工作了{:10_306:} plt.figure(figsize=(11, 11))
plt.rcParams['font.sans-serif'] = 'SimHei'
plt.rcParams['axes.unicode_minus'] = False
plt.style.use('ggplot')# 使用ggplot的绘图风格
N = len(airline.columns)
angles = np.linspace(0, 2 * np.pi, N, endpoint=False)# 设置雷达图的角度,用于平分切开一个圆面 #从0,2pi,生成均匀的6个位置
angles = np.concatenate((angles, ]))# 为了使雷达图一圈封闭起来 #这6个位置连起来
feature = airline.columns # 特征名称
fig = plt.figure()
ax = fig.add_subplot(1,1,1, polar=True) # 这里一定要设置为极坐标格式 #参数含义是 子图行数,子图列数,子图位置
ax.set_thetagrids(angles * 180 / np.pi, feature)# 画布上面每个定点的位置和添加每个特征的标签
# set_thetagrids方法用于设置极坐标角度网格线显示 ,参数为所要显示网格线的角度值列表和名字
ax.set_ylim(kmean_model.cluster_centers_.min(),
kmean_model.cluster_centers_.max())# 设置雷达图的范围 #设置Y值的最大最小为聚类中心的最大最小值
plt.title('客户群特征分布图') # 添加标题
ax.grid(True) # 添加网格线
sam = ['r-', 'o-', 'g-', 'b-', 'p-']# 样式,因为分五个群体,因此每个群体不用颜色
lab = []
for i in range(len(kmean_model.cluster_centers_)):# 依次绘制每个类中心的图像 ,一个个聚类中心开始
values = kmean_model.cluster_centers_# 第一个聚类中心的值开始,
values = np.concatenate((values, ]))# 为了使雷达图一圈封闭起来,需要下面的步骤
ax.plot(angles, values, sam, linewidth=2)# 绘制折线图
ax.fill(angles, values, alpha=0.25)# 填充颜色
lab.append('客户群' + str(i))# 图形重叠起来
plt.legend(lab)
plt.show()# 显示图形
在jupyter可以正常显示,在pycharm显示不出 逐条查 发现invalid command name ".!navigationtoolbar2tk.!button2" 或者是 The number of FixedLocator locations (6), usually from a call to set_ticks, does not match the number of ticklabels (5). 请问解决了吗ValueError: The number of FixedLocator locations (6), usually from a call to set_ticks, does not match the number of ticklabels (5).
云追风 发表于 2020-11-19 15:59
在jupyter可以正常显示,在pycharm显示不出 逐条查 发现invalid command name ".!navigationtoolbar2 ...
jupyter notebook里的变量,从启动就开始的,后面的cell可以使用前面的cell里定义过的变量。
你这里的变量 airline, kmean_model 等于多少,给出完整的数据和代码,才好分析问题出在哪。
页:
[1]