鱼C论坛

 找回密码
 立即注册
查看: 6992|回复: 6

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

[复制链接]
发表于 2020-11-19 04:20:31 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
如何解决,相同代码在pycharm中画图显示不出,但是在jupyter却能完美显示的问题
发不了图,但是情况是题目这样 没有漏掉任何东西
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-11-19 08:51:55 | 显示全部楼层
用的那个模块画图啊?
小声逼逼一句,大半夜还在学python,真牛逼啊
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 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, [angles[0]]))         # 为了使雷达图一圈封闭起来

    '''
    绘图
    '''
    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_[i]
        values = np.concatenate((values, [values[0]]))   # 为了使雷达图一圈封闭起来,需要下面的步骤
        ax.plot(angles, values, sam[i], linewidth=2)     # 绘制折线图
        ax.fill(angles, values, alpha=0.25)              # 填充颜色
        lab.append('客户群' + str(i))

    plt.legend(lab)
    plt.show()  # 显示图形


大半夜还在写 是因为复习一下项目 毕业得找工作了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 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, [angles[0]]))  # 为了使雷达图一圈封闭起来 #这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_[i]  # 第一个聚类中心的值开始,
    values = np.concatenate((values, [values[0]]))  # 为了使雷达图一圈封闭起来,需要下面的步骤
    ax.plot(angles, values, sam[i], 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"
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 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).
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 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).

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-4-9 20:50:46 | 显示全部楼层
云追风 发表于 2020-11-19 15:59
在jupyter可以正常显示,在pycharm显示不出 逐条查 发现  invalid command name ".!navigationtoolbar2 ...

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

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

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-1-16 02:05

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表