云追风 发表于 2020-11-19 04:20:31

如何解决,相同代码在pycharm中画图显示不出,但是在jupyter却能完美显示的问题

如何解决,相同代码在pycharm中画图显示不出,但是在jupyter却能完美显示的问题
发不了图,但是情况是题目这样 没有漏掉任何东西

狗宁 发表于 2020-11-19 08:51:55

用的那个模块画图啊?
小声逼逼一句,大半夜还在学python,真牛逼啊

云追风 发表于 2020-11-19 12:31:53

狗宁 发表于 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:}

云追风 发表于 2020-11-19 15:59:41

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"

云追风 发表于 2020-11-19 16:04:44

或者是 The number of FixedLocator locations (6), usually from a call to set_ticks, does not match the number of ticklabels (5).

鲨鱼你的辣椒 发表于 2021-4-9 17:31:29

请问解决了吗ValueError: The number of FixedLocator locations (6), usually from a call to set_ticks, does not match the number of ticklabels (5).

阿奇_o 发表于 2021-4-9 20:50:46

云追风 发表于 2020-11-19 15:59
在jupyter可以正常显示,在pycharm显示不出 逐条查 发现invalid command name ".!navigationtoolbar2 ...

jupyter notebook里的变量,从启动就开始的,后面的cell可以使用前面的cell里定义过的变量。

你这里的变量 airline, kmean_model 等于多少,给出完整的数据和代码,才好分析问题出在哪。

页: [1]
查看完整版本: 如何解决,相同代码在pycharm中画图显示不出,但是在jupyter却能完美显示的问题