鱼C论坛

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

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

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

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

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

x
如何解决,相同代码在pycharm中画图显示不出,但是在jupyter却能完美显示的问题
发不了图,但是情况是题目这样 没有漏掉任何东西
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

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

使用道具 举报

 楼主| 发表于 2020-11-19 12:31:53 | 显示全部楼层
狗宁 发表于 2020-11-19 08:51
用的那个模块画图啊?
小声逼逼一句,大半夜还在学python,真牛逼啊

用的matplotlib画的雷达图
  1. import matplotlib.pyplot as plt
  2. import numpy as np


  3. def plot(kmeans_model=None, columns=None):
  4.     '''
  5.     此函数用户绘制客户分群结果的雷达图
  6.     :param kmeans_model: 聚类的结果
  7.     :param columns: 各特征的名字
  8.     :return: 客户分群的雷达图
  9.     '''
  10.     plt.figure(figsize=(11, 11))

  11.     # 中文和负号的正常显示
  12.     plt.rcParams['font.sans-serif'] = 'SimHei'
  13.     plt.rcParams['axes.unicode_minus'] = False

  14.     plt.style.use('ggplot')  # 使用ggplot的绘图风格
  15.     N = len(columns)         # 特征数

  16.     angles = np.linspace(0, 2 * np.pi, N, endpoint=False)  # 设置雷达图的角度,用于平分切开一个圆面
  17.     angles = np.concatenate((angles, [angles[0]]))         # 为了使雷达图一圈封闭起来

  18.     '''
  19.     绘图
  20.     '''
  21.     feature = columns     # 特征名称
  22.     fig = plt.figure()
  23.     ax = fig.add_subplot(1,1,1, polar=True)           # 这里一定要设置为极坐标格式

  24.     ax.set_thetagrids(angles * 180 / np.pi, feature)  # 添加每个特征的标签
  25.     ax.set_ylim(kmeans_model.cluster_centers_.min(), kmeans_model.cluster_centers_.max())  # 设置雷达图的范围
  26.     plt.title('客户群特征分布图')           # 添加标题
  27.     ax.grid(True)                         # 添加网格线
  28.     sam = ['r-', 'o-', 'g-', 'b-', 'p-']  # 样式

  29.     lab = []
  30.     for i in range(len(kmeans_model.cluster_centers_)):  # 依次绘制每个类中心的图像
  31.         values = kmeans_model.cluster_centers_[i]
  32.         values = np.concatenate((values, [values[0]]))   # 为了使雷达图一圈封闭起来,需要下面的步骤
  33.         ax.plot(angles, values, sam[i], linewidth=2)     # 绘制折线图
  34.         ax.fill(angles, values, alpha=0.25)              # 填充颜色
  35.         lab.append('客户群' + str(i))

  36.     plt.legend(lab)
  37.     plt.show()  # 显示图形
复制代码



大半夜还在写 是因为复习一下项目 毕业得找工作了
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-11-19 15:59:41 | 显示全部楼层
  1. plt.figure(figsize=(11, 11))
  2. plt.rcParams['font.sans-serif'] = 'SimHei'
  3. plt.rcParams['axes.unicode_minus'] = False
  4. plt.style.use('ggplot')  # 使用ggplot的绘图风格
  5. N = len(airline.columns)
  6. angles = np.linspace(0, 2 * np.pi, N, endpoint=False)  # 设置雷达图的角度,用于平分切开一个圆面 #从0,2pi,生成均匀的6个位置
  7. angles = np.concatenate((angles, [angles[0]]))  # 为了使雷达图一圈封闭起来 #这6个位置连起来
  8. feature = airline.columns   # 特征名称
  9. fig = plt.figure()
  10. ax = fig.add_subplot(1,1,1, polar=True)   # 这里一定要设置为极坐标格式 #参数含义是 子图行数,子图列数,子图位置
  11. ax.set_thetagrids(angles * 180 / np.pi, feature)  # 画布上面每个定点的位置和添加每个特征的标签
  12. # set_thetagrids方法用于设置极坐标角度网格线显示 ,参数为所要显示网格线的角度值列表和名字
  13. ax.set_ylim(kmean_model.cluster_centers_.min(),
  14.             kmean_model.cluster_centers_.max())  # 设置雷达图的范围 #设置Y值的最大最小为聚类中心的最大最小值
  15. plt.title('客户群特征分布图')            # 添加标题
  16. ax.grid(True)     # 添加网格线
  17. sam = ['r-', 'o-', 'g-', 'b-', 'p-']  # 样式,因为分五个群体,因此每个群体不用颜色
  18. lab = []
  19. for i in range(len(kmean_model.cluster_centers_)):  # 依次绘制每个类中心的图像 ,一个个聚类中心开始
  20.     values = kmean_model.cluster_centers_[i]  # 第一个聚类中心的值开始,
  21.     values = np.concatenate((values, [values[0]]))  # 为了使雷达图一圈封闭起来,需要下面的步骤
  22.     ax.plot(angles, values, sam[i], linewidth=2)  # 绘制折线图
  23.     ax.fill(angles, values, alpha=0.25)  # 填充颜色
  24.     lab.append('客户群' + str(i))  # 图形重叠起来
  25. plt.legend(lab)
  26. plt.show()  # 显示图形
复制代码


在jupyter可以正常显示,在pycharm显示不出 逐条查 发现  invalid command name ".!navigationtoolbar2tk.!button2"
小甲鱼最新课程 -> https://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).
小甲鱼最新课程 -> https://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).

小甲鱼最新课程 -> https://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 等于多少,给出完整的数据和代码,才好分析问题出在哪。

小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-6-12 21:08

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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